mybatis之一对多映射查询(十一)
2017-08-20 16:28
351 查看
需求:查询订单信息,关联查询订单明细信息及用户信息
分析需求
查询订单信息,关联查询用户信息,所以我们可以发现主信息为orders,从信息为user,orderdetail
sql语句
修改扩展类
添加订单明细集合属性
映射文件
extends属性为继承,值为resultMap 的id,在mybatis映射文件中也可以和java类一样可以继承
OrdersMapper接口
测试代码
分析需求
查询订单信息,关联查询用户信息,所以我们可以发现主信息为orders,从信息为user,orderdetail
sql语句
SELECT u.id uid, o.*, od.orders_id, od.items_id FROM orders o LEFT JOIN USER u ON u.id = o.user_id LEFT JOIN orderdetail od ON o.id = od.orders_id LEFT JOIN items i ON i.id = od.items_id
修改扩展类
添加订单明细集合属性
package com.test.domain; import java.util.List; public class OrdersExt extends Orders { private User user; private List<Orderdetail> orderdetailList; public List<Orderdetail> getOrderdetailList() { return orderdetailList; } public void setOrderdetailList(List<Orderdetail> orderdetailList) { this.orderdetailList = orderdetailList; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
映射文件
extends属性为继承,值为resultMap 的id,在mybatis映射文件中也可以和java类一样可以继承
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.mapper.OrdersMapper"> <resultMap type="com.test.domain.OrdersExt" id="ordersAndUserResultMap"> <id column="id" property="id"/> <result column="user_id" property="userId"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <association property="user" javaType="com.test.domain.User"> 4000 <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="sex" property="sex"/> <result column="address" property="address"/> </association> </resultMap> <resultMap type="com.test.domain.OrdersExt" id="ordersAndUserDetialResultMap" extends="ordersAndUserResultMap"> <collection property="orderdetailList" ofType="com.test.domain.Orderdetail"> <id property="id" column="od_id"/> <result property="itemsId" column="items_id"/> <result property="ordersId" column="orders_id"/> <result property="itemsNum" column="items_num"/> </collection> </resultMap> <select id="findOrdersAndUserAndOrderdetail" resultMap="ordersAndUserDetialResultMap"> SELECT u.username, u.sex , u.address, o.*, od.id od_id, od.orders_id, od.items_id, od.items_num FROM orders o LEFT JOIN USER u ON u.id = o.user_id LEFT JOIN orderdetail od ON o.id = od.orders_id </select> </mapper>
OrdersMapper接口
package com.test.mapper; import java.util.List; import com.test.domain.OrdersExt; public interface OrdersMapper { List<OrdersExt> findOrdersAndUserAndOrderdetail(); }
测试代码
@Test public void test_02(){ SqlSession sqlSession = sqlSessionFactory.openSession(); OrdersMapper mapper = sqlSession.getMapper(OrdersMapper.class); List<OrdersExt> ordersExtList = mapper.findOrdersAndUserAndOrderdetail(); System.out.println(ordersExtList); }
相关文章推荐
- MyBatis之一对多映射查询sql配置文件。
- SSM框架之MyBatis(二)--多表查询及查询结果映射
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- mybatis ---- 级联查询 一对多 (集合映射)
- MyBatis高级映射(一对一查询)
- Mybatis学习(07)-高级映射之一对一查询
- 【Mybatis学习】查询映射过程解析
- 【MyBatis框架】高级映射-多对多查询
- MyBatis一对一查询使用ResultType映射
- MyBatis高级映射(多对多查询)
- Mybatis学习(08)-高级映射之一对多查询
- MyBatis高级映射之多对多查询
- Mybatis多参数查询映射
- mybatis ---- 级联查询 一对多 (集合映射)
- MyBatis查询结果集映射到JavaBean原理浅谈
- Mybatis学习(09)-高级映射之多对多查询
- 【MyBatis学习10】高级映射之多对多查询
- MyBatis学习(二)之双向一对多关联映射查询
- 【MyBatis】的高级关系映射和查询缓存详解
- mybatis ---- 级联查询 一对多 (集合映射)