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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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 让容器管理更轻松!