使用resultMap映射的方式:java
<!-- 一对一映射 --> <!-- 订单关联查询的resultMap 将整个结果映射到com.shi.POJO的Orders中 --> <resultMap type="com.shi.POJO.Orders" id="ordersUserResultMap"> <!-- 配置映射的订单信息 --> <!-- id:指定查询列中的惟一标识,订单信息中的惟一标识,若是有多个列组成惟一标识,配置多个id column:指定查询列中的惟一标识,若是有多个列组成惟一标识,配置多个id property:订单信息的惟一标识 ,列所映射到orders中哪一个属性 --> <id column="id" property="id"/> <result column="user_id" property="user_id"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <!-- 配置映射的关联的用户信息 --> <!-- association:用于映射关联查询单个对象的信息 propety: 要将关联查选的用户信息映射到Orders中哪一个属性 --> <association property="user" javaType="com.shi.POJO.User"> <!-- id :关联查询用户的惟一标识 column:指定惟一标识用户信息的列 property:映射到user的哪一个属性 --> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="birthday" property="birthday"/> <result column="sex" property="sex"/> <result column="address" property="address"/> </association> </resultMap> <select id="findOrderCastomResultMap" resultMap="ordersUserResultMap"> SELECT orders.*,user.username,user.sex,user.birthday FROM orders,USER WHERE orders.user_id=user.id </select>
对resultType 和 resultMap 的总结:sql
使用resultMap实现一对多映射:code
<!-- ================一对多映射================ --> <!-- 一对多映射查询 查询订单 ,用户信息 及订单明细表 --> <!-- rusultMap配置 注意:若是上面有重复的东西 可使用 extends="" --> <resultMap type="com.shi.POJO.Orders" id="OrdersAndOrderDetailResultMap" > <!-- 订单信息 --> <id column="id" property="id"/> <result column="user_id" property="user_id"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <!-- 用户信息 --> <association property="user" javaType="com.shi.POJO.User"> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="birthday" property="birthday"/> <result column="sex" property="sex"/> <result column="address" property="address"/> </association> <!-- 订单明细信息 --> <!-- 一个订单关联查询出来了多条明细,因此要使用collection进行映射 collection:对查询到多条记录映射到集合对象中去 property:将关联查询到的多条记录映射到该orderdetailList属性中去 ofType:指定映射到list集合属性中pojo的类型 --> <collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail"> <!-- id:订单明细表的惟一标识 property:要将订单明细的惟一标识映射到com.shi.POJO.Orderdetail 的哪一个属性 --> <id column="orderdetail_id" property="id"/> <result column="items_id" property="items_id"/> <result column="orders_id" property="orders_id"/> <result column="items_num" property="items_num"/> </collection> </resultMap> <!-- sql语句 --> <select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap"> SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, <!-- 注意:这里须要collection中的id 因此 不能和上面属性冲突 --> orderdetail.items_id, orderdetail.orders_id, orderdetail.items_num FROM orders, USER, orderdetail WHERE orders.user_id=user.id AND orderdetail.orders_id=orders.id </select>
对resultType 和 resultMap的总结:(一对多建议使用 resultMap)对象
映射思路:图片
<!-- =================多对多查询=============== --> <!-- 如今执行多对多查询 查询用户信息和商品信息 进行关联--> <!-- resultMap映射 --> <resultMap type="com.shi.POJO.User" id="UserAndItemsReusltMap"> <!-- 对用户信息进行映射 --> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="birthday" property="birthday"/> <result column="sex" property="sex"/> <result column="address" property="address"/> <!-- 对订单进行映射 ######一对多映射######--> <collection property="orders" ofType="com.shi.POJO.Orders"> <id column="id" property="id"/> <result column="user_id" property="user_id"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> <!-- 对订单细节进行映射 ######一对多映射######--> <collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail"> <id column="" property=""/> <result column="orderdetail_id" property="id"/> <result column="orders_id" property="orders_id"/> <result column="items_id" property="items_id"/> <result column="items_num" property="items_num"/> <!-- 对商品表进行映射 ######一对一映射###### --> <association property="items" javaType="com.shi.POJO.Items"> <id column="items_id" property="id"/> <result column="items_name" property="name"/> <result column="items_price" property="price"/> </association> </collection> </collection> </resultMap> <!-- sql语句 --> <select id="findUserAndItemsReusltMap" resultMap="UserAndItemsReusltMap"> SELECT orders.*, user.username, user.sex, user.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.orders_id, orderdetail.items_num, items.name items_name, items.price items_price FROM orders, USER, orderdetail, items WHERE orders.user_id=user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id=items.id </select>
总结:ci