QQ:5654880

mybatis一对一关联查询

1.

 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.

 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.

 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.

 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 }

 

posted @ 2017-10-11 17:20  大师兄丶2K  阅读(180)  评论(0编辑  收藏  举报