SSM16.3【Mybatis:通过注解实现Mybatis的复杂映射开发之一对一查询】

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

复制代码
 1 package com.haifei.domain;
 2 
 3 import java.util.Date;
 4 import java.util.List;
 5 
 6 public class User {
 7 
 8     private int id;
 9     private String username;
10     private String password;
11     private Date birthday;
12 
13 
14     public Date getBirthday() {
15         return birthday;
16     }
17 
18     public void setBirthday(Date birthday) {
19         this.birthday = birthday;
20     }
21 
22     public int getId() {
23         return id;
24     }
25 
26     public void setId(int id) {
27         this.id = id;
28     }
29 
30     public String getUsername() {
31         return username;
32     }
33 
34     public void setUsername(String username) {
35         this.username = username;
36     }
37 
38     public String getPassword() {
39         return password;
40     }
41 
42     public void setPassword(String password) {
43         this.password = password;
44     }
45 
46     @Override
47     public String toString() {
48         return "User{" +
49                 "id=" + id +
50                 ", username='" + username + '\'' +
51                 ", password='" + password + '\'' +
52                 ", birthday=" + birthday +
53                 '}';
54     }
55 }
复制代码
复制代码
 1 package com.haifei.domain;
 2 
 3 import java.util.Date;
 4 
 5 public class Order {
 6 
 7     private int id;
 8     private Date ordertime;
 9     private double total;
10 
11 
12     //当前订单属于哪一个用户
13     private User user;
14     public User getUser() {
15         return user;
16     }
17     public void setUser(User user) {
18         this.user = user;
19     }
20 
21     public int getId() {
22         return id;
23     }
24 
25     public void setId(int id) {
26         this.id = id;
27     }
28 
29     public Date getOrdertime() {
30         return ordertime;
31     }
32 
33     public void setOrdertime(Date ordertime) {
34         this.ordertime = ordertime;
35     }
36 
37     public double getTotal() {
38         return total;
39     }
40 
41     public void setTotal(double total) {
42         this.total = total;
43     }
44 
45 
46     @Override
47     public String toString() {
48         return "Order{" +
49                 "id=" + id +
50                 ", ordertime=" + ordertime +
51                 ", total=" + total +
52                 ", user=" + user +
53                 '}';
54     }
55 }
复制代码
复制代码
 1 package com.haifei.mapper;
 2 
 3 import com.haifei.domain.Order;
 4 import com.haifei.domain.User;
 5 import org.apache.ibatis.annotations.One;
 6 import org.apache.ibatis.annotations.Result;
 7 import org.apache.ibatis.annotations.Results;
 8 import org.apache.ibatis.annotations.Select;
 9 
10 import java.util.List;
11 
12 public interface OrderMapper {
13 
14     /*@Select("select *,o.id oid from orders o,user u where o.uid=u.id")
15     @Results({
16             @Result(column = "oid", property = "id"),
17             @Result(column = "ordertime",property = "ordertime"),
18             @Result(column = "total",property = "total"),
19             @Result(column = "uid", property = "user.id"),
20             @Result(column = "username", property = "user.username"),
21             @Result(column = "password", property = "user.password"),
22             @Result(column = "birthday", property = "user.birthday")
23     })*/
24     @Select("select * from orders")
25     @Results({
26             @Result(column = "id", property = "id"),
27             @Result(column = "ordertime",property = "ordertime"),
28             @Result(column = "total",property = "total"),
29             @Result(
30                     property = "user", //要封装的属性名称
31                     column = "uid", //根据哪个字段去查询user表的数据
32                     javaType = User.class, //要封装的实体类型
33                     one = @One(select = "com.haifei.mapper.UserMapper.findById")
34                     //select属性 代表查询那个接口的方法获得数据
35             )
36     })
37     public List<Order> findAll();
38 
39 }
复制代码

 

 

 

 

复制代码
 1 package com.haifei.test;
 2 
 3 import com.haifei.domain.Order;
 4 import com.haifei.mapper.OrderMapper;
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.Before;
10 import org.junit.Test;
11 
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.util.List;
15 
16 public class MybatisTest2 {
17 
18     private OrderMapper mapper;
19 
20     @Before
21     public void before() throws IOException {
22         InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
23         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
24         SqlSession sqlSession = sqlSessionFactory.openSession(true); //true-->事务自动提交
25         mapper = sqlSession.getMapper(OrderMapper.class);
26     }
27 
28     /**
29      * 一对一查询
30      */
31     @Test
32     public void testFindAll(){
33         List<Order> orderList = mapper.findAll();
34         for (Order order : orderList) {
35             System.out.println(order);
36         }
37         /*
38         Order{id=1, ordertime=Thu Jan 01 08:00:02 CST 1970, total=3000.0, user=User{id=1, username='zhangsan', password='123', birthday=Sat Jul 24 20:00:29 CST 2021}}
39         Order{id=2, ordertime=Thu Jan 01 08:00:02 CST 1970, total=1000.0, user=User{id=2, username='lisi', password='345', birthday=Sat Jul 24 20:00:29 CST 2021}}
40         Order{id=3, ordertime=Thu Jan 01 08:00:02 CST 1970, total=344.0, user=User{id=1, username='zhangsan', password='123', birthday=Sat Jul 24 20:00:29 CST 2021}}
41         Order{id=4, ordertime=Thu Jan 01 08:00:02 CST 1970, total=455.0, user=User{id=2, username='lisi', password='345', birthday=Sat Jul 24 20:00:29 CST 2021}}
42         Order{id=5, ordertime=Thu Jan 01 08:00:02 CST 1970, total=100.0, user=User{id=3, username='tom', password='abc', birthday=Sat Jul 24 20:00:29 CST 2021}}
43          */
44     }
45 
46 }
复制代码

 

posted @   yub4by  阅读(52)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示