1.一對一關聯查詢java
需求:查詢出每條orders記錄和其關聯的user信息sql
在orders實體類中添加屬性與set、get方法app
/** * 測試1對1關聯查詢 */ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; }
接口:測試
public interface OrdersMapper { /** * 測試1對1關聯查詢 */ public List<Orders> findAllOrdersCNUser(); }
映射:this
<!-- 1對1的返回map 不能省略映射,必須把全部想要查詢出來的屬性都手動映射 --> <resultMap type="Orders" id="orders"> <id property="id" column="id"/> <result property="userId" column="user_id"/> <result property="number" column="number"/> <result property="createtime" column="createtime"/> <result property="note" column="note"/> <!-- 1對1屬性 --> <!-- javaType必須寫!! --> <association property="user" javaType="user"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="sex" column="sex"/> <result property="birthday" column="birthday"/> <result property="address" column="address"/> </association> </resultMap> <!-- 測試一對1關聯查詢 --> <select id="findAllOrdersCNUser" resultMap="orders"> select * from orders o left join user u on o.user_id=u.id </select>
測試:spa
/** * 1對1關聯查詢 */ @Test public void m01() { // 獲取sqlSession,和Spring整理後由Spring管理 SqlSession sqlSession = this.sqlSessionFactory.openSession(); // 從sqlSession中獲取Mapper接口的代理對象 OrdersMapper ordersMapper = sqlSession.getMapper(OrdersMapper.class); // 執行查詢 List<Orders> list = ordersMapper.findAllOrdersCNUser(); for (Orders orders : list) { System.out.println(orders); System.out.println(orders.getUser()); } // 和Spring整理後由Spring管理 sqlSession.close(); }
2.一對多關聯查詢代理
需求:查詢出全部的user和與其對應的orders信息code
在user實體類中添加屬性和set、get方法對象
/** * 測試1對多 */ List<Orders> ordersList; public List<Orders> getOrdersList() { return ordersList; } public void setOrdersList(List<Orders> ordersList) { this.ordersList = ordersList; }
接口:blog
/** * 測試1對多 */ public List<User> findAllUserCNOrders();
映射:
<!-- 1對多返回映射 --> <resultMap type="User" id="user"> <id property="id" column="id" /> <result property="username" column="username" /> <result property="sex" column="sex" /> <result property="birthday" column="birthday" /> <result property="address" column="address" />
<!-- javaType && ofType必須寫!! --> <collection property="ordersList" javaType="List" ofType="Orders"> <id property="id" column="id" /> <result property="userId" column="user_id" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> </collection> </resultMap> <!-- 測試1對多 --> <select id="findAllUserCNOrders" resultMap="user"> select * from user u left join orders o on u.id = o.user_id </select>
測試:
/** * 測試1對多 */ @Test public void m01() { // 獲取sqlSession,和Spring整理後由Spring管理 SqlSession sqlSession = this.sqlSessionFactory.openSession(); // 從sqlSession中獲取Mapper接口的代理對象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 執行查詢 List<User> list = userMapper.findAllUserCNOrders(); for (User user : list) { System.out.println(user); System.out.println(user.getOrdersList()); } // 和Spring整理後由Spring管理 sqlSession.close(); }