真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解mybatis關(guān)系映射之一對(duì)多和多對(duì)一

小編這次要給大家分享的是詳解mybatis關(guān)系映射之一對(duì)多和多對(duì)一,文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

涿鹿網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

本實(shí)例使用用戶(hù)和訂單的例子做說(shuō)明: 一個(gè)用戶(hù)可以有多個(gè)訂單, 一個(gè)訂單只對(duì)應(yīng)一個(gè)用戶(hù)。(其中應(yīng)用到注釋?zhuān)?/p>

1.代碼的結(jié)構(gòu)

詳解mybatis關(guān)系映射之一對(duì)多和多對(duì)一

2. 建表語(yǔ)句:

 CREATE DATABASE test;  
  USE test; 
  CREATE TABLE person( 
   personId VARCHAR(36) PRIMARY KEY, 
   personName VARCHAR(64), 
   personAddress VARCHAR(128), 
   personTel VARCHAR(11) 
  ); 
  CREATE TABLE orders( 
   orderId VARCHAR(36) PRIMARY KEY, 
   orderNumber VARCHAR(20), 
   orderPrice INT, 
   pid VARCHAR(36) 
  ); 
INSERT INTO person VALUES('1', '木子', '湖北', '110'); 
INSERT INTO person VALUES('2', '木子大大', '武漢', '120'); 
INSERT INTO person VALUES('1', '木子苗苗', '天門(mén)', '119'); 
  INSERT INTO orders VALUES('1', '001', 100, '1'); 
  INSERT INTO orders VALUES('2', '002', 200, '1'); 
  INSERT INTO orders VALUES('3', '003', 300, '2'); 
  INSERT INTO orders VALUES('4', '004', 400, '2'); 
  INSERT INTO orders VALUES('5', '005', 500, '3'); 
SELECT p.*, o.* FROM person p JOIN orders o ON (p.personId=o.pid) WHERE p.personId = '1' ;
*指顯示所有字段

3. 用戶(hù)實(shí)體:

package com.mybatis.domain;
import java.util.List;
import lombok.Data;
@Data//注釋?zhuān)≒erson為單方)
public class Person {
  private String personid;
  private String personname;
  private String personaddress;
  private String persontel;
  //這個(gè)代表多方里面的內(nèi)容(Orders)
  private List orders;
 @Override
 public String toString() {
 return "Person [personid=" + personid + ", personname=" + personname
  + ", personaddress=" + personaddress + ", persontel="
  + persontel + ", orders=" + orders + "]";
 }
}

4. 訂單實(shí)體:

package com.mybatis.domain;
import lombok.Data;
@Data//(Orders為多方)
public class Orders {
  private String orderid;
  private String ordernumber;
  private Integer orderprice;
  //對(duì)象(單方Person)與外鍵進(jìn)行關(guān)聯(lián)
  private Person person;
}

5.寫(xiě)PersonMapper.java的接口

package com.mybatis.dao.mapper;
import com.mybatis.domain.Orders;
import com.mybatis.domain.Person;
import java.util.List;
public interface PersonMapper {
  int deleteByPrimaryKey(String personid);
  int insert(Person record);
  Person selectByPrimaryKey(String personid);
  List selectAll();
  int updateByPrimaryKey(Person record);
  //一對(duì)多查詢(xún)(根據(jù)id查詢(xún))
  public List findPersonAndOrders(String pid);
  //一對(duì)多查詢(xún)返回一個(gè)對(duì)象
  public Person selectPersonById(String id);
}

6. 一對(duì)多實(shí)體配置: PersonMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>


 
  
  
  
  
  
     
     
     
       
      
       
       
     
 
   
   
    
 

7.寫(xiě)OrdersMapper.java的接口

package com.mybatis.dao.mapper;
import com.mybatis.domain.Orders;
import java.util.List;
public interface OrdersMapper {
  int deleteByPrimaryKey(String orderid);
  int insert(Orders record);
  Orders selectByPrimaryKey(String orderid);
  List selectAll();
  int updateByPrimaryKey(Orders record);
  //多查一 根據(jù)id
  public Orders selectOrderById(String oid);
  //多查一 根據(jù)orderNumber
  public Orders selectOrderNumber(String number);
}

8.多對(duì)一實(shí)體配置:OrdersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>


 
  
  
  
  
    
     
     
      
  
 
 
 

 
 
 
 

9.其他配置

db.properties配置(sql語(yǔ)句的基本鏈接)
db.driver=com.MySQL.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/wang1?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456
   log4j.properties配置(注釋?zhuān)?
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  mybatis.xml(逆向生成domain、dao層)
<?xml version="1.0" encoding="UTF-8" ?>



 
 
 
 
   
 
 
 
 
 
 
  
  
  
  
  
  
  
  
  
 
 
 
   
 
 
  

  generatorConfig.xml配置(對(duì)MySQL進(jìn)行操作)下面標(biāo)紅部分根據(jù)自己建立的進(jìn)行修改
<?xml version="1.0" encoding="UTF-8"?>


  D盤(pán)中要有此包mysql-connector-java-5.1.7-bin.jar

 
 
 
 
 
 
 
 
 
 
  
  
 
 
 
  
 
 
 
  
  
  
  
 
 
 
  
  
 
   
 
  
  
  
 
            
 

10.測(cè)試文件

package com.mybatis.test;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import lombok.Data;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import com.mybatis.dao.mapper.OrdersMapper;
import com.mybatis.dao.mapper.PersonMapper;
import com.mybatis.domain.Orders;
import com.mybatis.domain.Person;
public class TestStudentMapper {
 SqlSessionFactory sessionFactory = null;
 // 這方法之前
 @Before
 public void setup() throws Exception {
 String resource = "mybatis.xml";
 // 這個(gè)是加載配置文件
 InputStream inputStream = Resources.getResourceAsStream(resource);
 // 得到會(huì)話(huà)工廠(chǎng)
 sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 }
 //查詢(xún)一對(duì)多 根據(jù)這個(gè)person里面的id號(hào)就能查詢(xún)出這個(gè)用戶(hù)有多少個(gè)訂單記錄
// @Test
 public void testSelectPersonById(){
 SqlSession sq = sessionFactory.openSession();
 // 得到dao層的實(shí)現(xiàn)類(lèi)
 PersonMapper u = sq.getMapper(PersonMapper.class);
 Person person = u.selectPersonById("2");
 System.out.println(person);
 }
 //多對(duì)一 根據(jù)多對(duì)一id進(jìn)行查詢(xún)
// @Test//多對(duì)一關(guān)聯(lián)查詢(xún) 
   public void testSelectOrderById(){ 
   SqlSession sq = sessionFactory.openSession();
  // 得到dao層的實(shí)現(xiàn)類(lèi)
   OrdersMapper u = sq.getMapper(OrdersMapper.class);
  Orders od = u.selectOrderById( "2");
  System.out.println(od.getPerson().getPersonname());
  System.out.println(od.getPerson().getPersonaddress());
   } 
  @Test//多對(duì)一關(guān)聯(lián)查詢(xún) 
   public void testSelectOrderNumber(){ 
   SqlSession sq = sessionFactory.openSession();
  // 得到dao層的實(shí)現(xiàn)類(lèi)
   OrdersMapper u = sq.getMapper(OrdersMapper.class);
  Orders od = u.selectOrderNumber("001");
  System.out.println(od.getPerson().getPersonname());
  System.out.println(od.getPerson().getPersonaddress());
   } 
}

如有問(wèn)題請(qǐng)多多指教!希望給您帶來(lái)幫助!祝您生活愉快。

看完這篇關(guān)于詳解mybatis關(guān)系映射之一對(duì)多和多對(duì)一的文章,如果覺(jué)得文章內(nèi)容寫(xiě)得不錯(cuò)的話(huà),可以把它分享出去給更多人看到。


網(wǎng)頁(yè)名稱(chēng):詳解mybatis關(guān)系映射之一對(duì)多和多對(duì)一
標(biāo)題網(wǎng)址:http://weahome.cn/article/gighoc.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部