日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mybatis 使用in 查询时报错_使用mybatis的resultMap进行复杂查询 057

發布時間:2025/6/15 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis 使用in 查询时报错_使用mybatis的resultMap进行复杂查询 057 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

拿到表的第一時間要學會分析陌生表的數據模型:

1、學習單表記錄了什么東西(去學習理解需求)

2、學習單表重要字段的意義(優先學習不能為空的字段)

3、學習表與表之間的關系(一對一、一對多、多對多)通過表的外鍵分析表之間的關系

注意:分析表與表之間的關系時是要建立在具體 的業務意義基礎之上

用戶表user:記錄了購買商品的用戶

訂單表orders:記錄了用戶所創建的訂單信息

訂單明細表orderdetail:記錄了用戶創建訂單的詳細信息

商品信息表items:記錄了商家提供的商品信息

分析表與表之間的關系:

用戶user和訂單orders:

user---->orders:一個用戶可以創建多個訂單 一對多

orders-->user:一個訂單只能由一個用戶創建 一對一

訂單orders和訂單明細orderdetail:

orders-->orderdetail:一個訂單可以包括多個訂單明細 一對多

orderdetail-->orders:一個訂單明細只屬于一個訂單 一對一

訂單明細orderdetail和商品信息items:

orderdetail-->items:一個訂單明細對應一個商品信息 一對一

items--> orderdetail:一個商品對應多個訂單明細 一對多

需求:查詢所有用戶信息,關聯查詢訂單及訂單明細信息及商品信息

分析sql語句如何寫:

主查詢表:用戶信息

關聯查詢:訂單、訂單明細,商品信息

SELECTorders.*,user.username,user.sex ,orderdetail.id orderdetail_id,orderdetail.items_num,orderdetail.items_id,items.name items_name,items.detail items_detailFROMorders,USER,orderdetail,itemsWHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id AND items.id = orderdetail.items_id

pojo定義:

User.java

Orders.java

Orderdetail.java

Items.java

mapper.xml(注意sql語句查詢時是否使用別名,有的話一定要同步)
<!-- 一對多查詢,查詢用戶及訂單明細和商品信息 -->
2 <resultMap id="userOrdersAndItemsResultMap" type="user">
3 <!-- 用戶信息映射 -->
4 <id column="id" property="id"/>
5 <result column="username" property="username"/>
6 <result column="sex" property="sex"/>
7 <!-- 訂單信息映射 -->
8 <!-- 下邊完成關聯信息的映射
9 collection:用于對關聯信息映射到集合
10 property:要將關聯信息映射到User的哪個屬性中
11 ofType:關聯信息映射到User的屬性的類型,可以使用別名,不過全稱方便確認
12 -->
13 <collection property="orderlist" ofType="com.emuii.mybatis.pojo.Orders">
14 <!-- id:訂單關聯用戶查詢的唯一標識 -->
15 <id column="id" property="id"/>
16 <result column="user_id" property="userId"/>
17 <result column="number" property="number"/>
18 <result column="createtime" property="createtime"/>
19 <result column="note" property="note"/>
20 <!-- 訂單詳細信息映射 -->
21 <collection property="orderdetails" ofType="com.emuii.mybatis.pojo.Orderdetail">
22 <!-- id:關聯信息訂單明細的唯一標識
23 property:Orderdetail的屬性名
24 -->
25 <id column="orderdetail_id" property="id"/>
26 <result column="items_num" property="itemsNum"/>
27 <result column="items_id" property="itemsId"/>
28 <association property="items" javaType="com.emuii.mybatis.pojo.Items">
29 <id column="id" property="id"/>
30 <result column="items_name" property="name"/>
31 <result column="items_detail" property="detail"/>
32 </association>
33 </collection>
34 </collection>
35 </resultMap>
36
37 <!-- 一對多查詢使用reusltMap完成
38 查詢用戶及訂單和訂單明細,關聯商品,的信息
39 -->
40 <select id="findUserOrdersAndItems" resultMap="userOrdersAndItemsResultMap">
41 SELECT
42 orders.*,
43 user.username,
44 user.sex ,
45 orderdetail.id orderdetail_id,
46 orderdetail.items_num,
47 orderdetail.items_id,
48 items.name items_name,
49 items.detail items_detail
50 FROM
51 orders,
52 USER,
53 orderdetail,
54 items
55 WHERE orders.user_id = user.id AND orders.id = orderdetail.orders_id AND items.id = orderdetail.items_id
56 </select>

mapper.java(代理接口)

Test:
public class OrdersMapperTest {
// 會話工廠
private SqlSessionFactory sqlSessionFactory;
// 創建工廠
@Before
public void init() throws IOException {
// 配置文件(SqlMapConfig.xml)
String resource = "SqlMapConfig.xml";
// 加載配置文件到輸入流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 創建會話工廠
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testFindUserOrdersAndItems() throws Exception {
// 獲取statement
SqlSession sqlSession = sqlSessionFactory.openSession();
// 創建mapper代理接口(Dao接口)
OrdersMapper ordersMapper = sqlSession.getMapper(OrdersMapper.class);
// 調用方法
List<User> list = ordersMapper.findUserOrdersAndItems();
sqlSession.close();
System.out.println(list);
}
}

總結

以上是生活随笔為你收集整理的mybatis 使用in 查询时报错_使用mybatis的resultMap进行复杂查询 057的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。