Flask接口签名sign原理与实例代码浅析
234
2023-05-23
mybatis高级映射一对多查询实现代码
1.需求分析:
在开发中会遇到这样一个问题,查询订单信息,级联查询出用户信息和订单明细信息
2.sql语句实现
2.1确定主查询表:订单表
2.2确定关联查询表:用户表, 订单明细表
sql语句如下:
select
orders.*,
t_user.address,
t_user.name,
t_user.brithday,
orderdetail.id orderdetail_id,
orderdetail.orderid,
orderdetail.itemsid
from
orders,
t_user,
orderdetail
where
orders.userid=t_user.id AND orderdetail.orderid=orders.id;
查询结果如下:
映射要求:
不能出现重复的订单信息
3.编码实现
在orders.java中添加属性,List
public class Orders {
private int id;
private String note;
private Date dateTime;
private String number;
private int userId;
private User user;
private List
}
最终会将订单信息映射到orders中,订单所对应的订单明细映射到orders的ordersDetails集合中,从上面查询结果图中可以看出最终的订单信息将为2条(orders信息不重复),每个订单orders中的属性存储了该订所对应的订单明细。
4.编写mapper.java和mapper.xml文件
代码如下:
package com.djp.config.mapper;
import com.djp.pojo.Orders;
import com.djp.pojo.OrdersCustom;
import java.util.List;
public interface OrdersCustomMapper {
/**
* 查询订单关联查询用户信息和订单明细信息
*
* @return
*/
List
/**
* 查询订单关联查询用户信息
*
* @return
*/
List
/**
* 使用resultMap映射
*
* @return
* @throws RuntimeException
*/
List
}
对于mapper.xml的解释加在了代码中 ,如下:
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select
orders.*,
t_user.address,
t_user.name,
t_user.brithday,
orderdetail.id orderdetail_id,
orderdetail.orderid,
orderdetail.itemsid
from
orders,
t_user,
orderdetail
where
orders.userid=t_user.id AND orderdetail.orderid=orders.id
select orders.*,t_user.aGIxGXxzddress,t_user.name,t_user.brithday from orders, t_user where orders.userid=t_user.id
select orders.*,t_user.address,t_user.name,t_user.brithday from orders, t_user where orders.userid=t_user.id
代码有点多,不怕得,下面的是之前的一对一的,注意继承至之前写好的resultMap。
5 写测试代码:
/**
* 查询订单关联查询用户信息和订单明细信息
*/
@Test
public void testFindOrderAndOrderDetailResultMap() {
try {
System.out.println("start.................");
//通过得到的SqlSessionFactory打开回话sqlSession
SqlSession sqlSession = SqlSessionFactory.openSession();
//通过会话得到用户的代理
OrdersCustomMapper ordersCustomMapper = sqlSession.getMapper(OrdersCustomMapper.class);
List
for (Orders item : list) {
System.out.println("订单+用户+订单明细:"+item);
}
} catch (Exception e) {
e.printStackTrace();
}
}
运行结果如下:
从图中可看出我们需要的订单信息,关联查询出的用户信息,关联查询出的订单明细信息都出来了!
6 .总结
mybatis使用resultMap实现一对多查询用collection对关联查询出的多条记录映射到一个list集合中
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~