Mybatis之一對多,多對多查詢
阿新 • • 發佈:2018-11-04
association是用於一對一和多對一,而collection是用於一對多的關係
一對一(訂單和使用者):
<select id="findOrdersUser" resultType="com.mybatis.xdw.po.OrdersCustom"> select orders.*,user.username,user.sex,user.address from orders,user where orders.user_id = user.id </select> <resultMap type="com.mybatis.xdw.po.Orders" id="OrdersUserResultMap"> <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.mybatis.xdw.po.User"> <id column="id" property="id" /> <result column="username" property="username" /> <result column="sex" property="sex" /> <result column="birthday" property="birthday" /> <result column="address" property="address" /> </association> </resultMap>
一對多(使用者對訂單):
<select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap"> SELECT u.id as u_id, u.username, u.sex, u.address, o.* FROM USER u, orders o WHERE u.id = o.user_id </select> <resultMap type="com.mybatis.xdw.po.User" id="UserandOrdersResultMap" > <!-- property 實體類的屬性 --> <id column="id" property="id" /> <result column="username" property="username" /> <result column="sex" property="sex" /> <result column="birthday" property="birthday" /> <result column="address" property="address" /> <collection property="ordersList" ofType="com.mybatis.xdw.po.Orders"> <id column="id" property="id" /> <result column="user_id" property="userId" /> <result column="number" property="number"/> <result column="createtime" property="createtime"/> </collection> </resultMap>
多對多(使用者對商品):
<resultMap type="com.mybatis.xdw.po.User" id="UserAndItemsResultMap"> <id column="id" property="id" /> <result column="username" property="username" /> <result column="sex" property="sex" /> <result column="birthday" property="birthday" /> <result column="address" property="address" /> <collection property="ordersList" ofType="com.mybatis.xdw.po.Orders"> <id column="id" property="id" /> <result column="user_id" property="userId" /> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <collection property="orderdetails" ofType="com.mybatis.xdw.po.Orderdetail"> <id column="orderdetail_id" property="ordersId" /> <result column="items_id" property="itemsId" /> <result column="items_num" property="itemsNum" /> <association property="items" javaType="com.mybatis.xdw.po.Items"> <id column="id" property="id" /> <result column="items_name" property="name" /> <result column="items_price" property="price" /> <result column="pic" property="pic" /> <result column="items_detail" property="detail"/> </association> </collection> </collection> </resultMap> <select id="findUserAndItemsResultMap" resultMap="UserAndItemsResultMap"> SELECT orders.*, USER.username, USER.sex, USER.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetail.orders_id, items.name items_name, items.detail items_detail, 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>