xml中的配置:--通过外键进行关联-->映射到Orders类 orders类中的属性包括(自己本身的属性,和用户的关系的属性User user,和订单明细之间的关系的属性List<OrderDetail>orderdetails)
1)一个订单一个用户(使用association)
2)一个订单多个订单明细(使用collection)
<!-- ####################################一对多的查询########################################################## --> <resultMap type="cn.itcast.domain.Orders" id="OrdersAndOrderDetailResultMap" extends="ordersUserResultMap"> <!-- 因为使用了继承 下面下注释的代码就没有必要写 --> <!-- <id column="id" property="id"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <result column="user_id" property="userId"/> <association property="user" javaType="cn.itcast.domain.User"> <id column="id" property="id"/> <result column="username" property="username"/> <result column="sex" property="sex"/> <result column="address" property="address"/> </association> --> <!-- 订单信息 --> <!-- 用户信息 --> <!-- 订单明细信息 一个订单关联查询出了多条明细,使用collection进行映射 collection:对关联查询到多条记录映射到集合对象中 property:将关联查询到多条记录映射到cn.itcast.domain.Orders中那个属性 oftype:指定映射到list集合属性中pojo的类型 --> <collection property="orderdetails" ofType="cn.itcast.domain.Orderdetail" > <id column="orderdetail_id" property="id"/> <result column="items_num" property="itemsNum"/> <result column="items_id" property="itemsId"/> <result column="orders_id" property="ordersId"/> </collection> </resultMap> <select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap"> select orders.*, user.username,user.sex,user.address, orderdetail.items_id,orderdetail.items_num,orderdetail.orders_id,orderdetail.id orderdetail_id from orders,user,orderdetail where orders.user_id=user.id and orders.id=orderdetail.orders_id </select>
接口中定义方法
public List<Orders> findOrdersAndOrderDetailResultMap();
测试:
@Test public void testfindOrdersAndOrderDetailResultMap(){ SqlSession sqlSession = sqlSessionFactory.openSession(); OrdersMapperUser ordersMapperUser = sqlSession.getMapper(OrdersMapperUser.class); List<Orders> list = ordersMapperUser.findOrdersAndOrderDetailResultMap(); System.out.println(list); }
测试结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-12 11:50:22