mybatis一對一關聯查詢

1.java

 1 package com.test.entity;
 2 
 3 import java.util.Date;
 4 
 5 /**
 6  * 
 7  * @author Mr
 8  * 跟數據庫表一一對應
 9  */
10 public class User {
11     
12     private int id;
13     private String username;
14     private Date birthday;
15     private String sex;
16     private String address;
17     public int getId() {
18         return id;
19     }
20     public void setId(int id) {
21         this.id = id;
22     }
23     public String getUsername() {
24         return username;
25     }
26     public void setUsername(String username) {
27         this.username = username;
28     }
29     public Date getBirthday() {
30         return birthday;
31     }
32     public void setBirthday(Date birthday) {
33         this.birthday = birthday;
34     }
35     public String getSex() {
36         return sex;
37     }
38     public void setSex(String sex) {
39         this.sex = sex;
40     }
41     public String getAddress() {
42         return address;
43     }
44     public void setAddress(String address) {
45         this.address = address;
46     }
47     public User() {
48         super();
49         // TODO Auto-generated constructor stub
50     }
51     public User(String username, Date birthday, String sex,
52             String address) {
53         super();
54         this.username = username;
55         this.birthday = birthday;
56         this.sex = sex;
57         this.address = address;
58     }
59     public User(int id, String username, Date birthday, String sex,
60             String address) {
61         super();
62         this.id = id;
63         this.username = username;
64         this.birthday = birthday;
65         this.sex = sex;
66         this.address = address;
67     }
68     @Override
69     public String toString() {
70         return "User [id=" + id + ", username=" + username + ", birthday="
71                 + birthday + ", sex=" + sex + ", address=" + address + "]";
72     }
73     
74 }

2.sql

 1 package com.test.entity;
 2 
 3 import java.util.Date;
 4 
 5 /**
 6  * 訂單實體類
 7  * @author Mr
 8  * 由於這個類不能完成下面的sql語句的映射,要新建pojo
 9  */
10 public class Orders {
11     /* SELECT orders.*,userss.username,userss.sex,userss.address FROM orders,userss
12      *  WHERE orders.user_id=userss.id*/
13     private Integer id;
14     private Integer userId;
15     private String numbers;
16     private Date createtime;
17     private String note;
18     
19     //使用resultMap添加user
20     private User user;
21     
22     public User getUser() {
23         return user;
24     }
25     public void setUser(User user) {
26         this.user = user;
27     }
28     @Override
29     public String toString() {
30         return "Orders [id=" + id + ", userId=" + userId + ", numbers="
31                 + numbers + ", createtime=" + createtime + ", note=" + note
32                 + "]";
33     }
34     public Orders(Integer id, Integer userId, String numbers, Date createtime,
35             String note) {
36         super();
37         this.id = id;
38         this.userId = userId;
39         this.numbers = numbers;
40         this.createtime = createtime;
41         this.note = note;
42     }
43     public Orders() {
44         super();
45         // TODO Auto-generated constructor stub
46     }
47     public Integer getId() {
48         return id;
49     }
50     public void setId(Integer id) {
51         this.id = id;
52     }
53     public Integer getUserId() {
54         return userId;
55     }
56     public void setUserId(Integer userId) {
57         this.userId = userId;
58     }
59     public String getNumbers() {
60         return numbers;
61     }
62     public void setNumbers(String numbers) {
63         this.numbers = numbers;
64     }
65     public Date getCreatetime() {
66         return createtime;
67     }
68     public void setCreatetime(Date createtime) {
69         this.createtime = createtime;
70     }
71     public String getNote() {
72         return note;
73     }
74     public void setNote(String note) {
75         this.note = note;
76     }
77 }

3.數據庫

 1 package com.test.entity;
 2 
 3 import java.util.Date;
 4 
 5 /**
 6  * 它的存在是爲了解決下面的sql語句的映射
 7  * SELECT orders.*,userss.username,userss.sex,userss.address 
 8  * FROM orders,userss WHERE orders.user_id=userss.id
 9  * 
10  * @author Mr
11  *
12  */
13 public class OrdersCustom extends Orders{
14     //解決這些映射問題
15     //userss.username,userss.sex,userss.address
16     private String username;
17     private String sex;
18     private String address;
19     public String getUsername() {
20         return username;
21     }
22     public void setUsername(String username) {
23         this.username = username;
24     }
25     public String getSex() {
26         return sex;
27     }
28     public void setSex(String sex) {
29         this.sex = sex;
30     }
31     public String getAddress() {
32         return address;
33     }
34     public void setAddress(String address) {
35         this.address = address;
36     }
37     @Override
38     public String toString() {
39         return "OrdersCustom [username=" + username + ", sex=" + sex
40                 + ", address=" + address + "]";
41     }
42 }

4.apache

 1 <!--  -->
 2 <resultMap type="com.test.entity.Orders" id="OrdersUserResultMap">
 3     <id column="id" property="id"/>
 4     <result column="user_id" property="userId"/>
 5     <result column="numbers" property="numbers"/>
 6     <result column="createtime" property="createtime"/>
 7     <result column="note" property="note"/>
 8         <!-- 配置關聯映射
 9         property 將關聯查詢的信息映射到每一個order的屬性
10         user到orders:一個用戶能夠下多個訂單:一對多
11         orders到user:一個訂單隻能由一個用戶建立:一對一
12          -->
13         <association property="user" javaType="com.test.entity.User">
14             <id column="id" property="id"/>
15             <result column="username" property="username"/>
16             <result column="sex" property="sex"/>
17             <result column="address" property="address"/>
18         </association>
19 </resultMap>
20 <!-- 引用 resultMap-->
21 <select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap">
22     SELECT orders.*,
23     userss.username,
24     userss.sex,
25     userss.address 
26     FROM orders,userss 
27     WHERE orders.user_id=userss.id
28 </select>

5.session

 1 package com.test.demo;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.List;
 6 
 7 import org.apache.ibatis.io.Resources;
 8 import org.apache.ibatis.session.SqlSession;
 9 import org.apache.ibatis.session.SqlSessionFactory;
10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
11 
12 import com.test.dao.OrdersMapperCustom;
13 import com.test.entity.Orders;
14 
15 /**
16  * 使用resultMap配置關聯查詢
17  * @author Mr
18  *
19  */
20 public class Test10 {
21 
22     public static void main(String[] args) throws IOException {
23         //mybatis核心配置文件
24         String resource = "SqlMapConfig.xml";
25         //讀取配置文件
26         InputStream inputStream = Resources.getResourceAsStream(resource);
27         //獲取工廠
28         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
29         //獲取數據庫操做對象
30         SqlSession sqlSession = sqlSessionFactory.openSession();
31         
32         OrdersMapperCustom omc = sqlSession.getMapper(OrdersMapperCustom.class);
33         
34         List<Orders> list = omc.findOrdersUserResultMap();
35         
36         for (Orders orders : list) {
37             System.out.println(orders.getUser().getUsername());
38             System.out.println(orders.getUserId());
39         }
40 
41     }
42 
43 }
相關文章
相關標籤/搜索