現在有一張訂單表t_stockorder,其擁有id、code、client_id、merchandise_id、merchandise_number、order_date、operator_id這些字段,其中client_id關聯t_client表中code字段,merchandise_id關聯t_merchandise表的code字段,operator_id關聯t_employee表的code字段。
現在要通過SQL語句將訂單表中t_stockorder的數據全部查詢出來,SQL語句如下所示:
1
2
3
4
5
6
7
8
9
10
11
|
select so.id, so.code, c. name cname, m. name mname, so.merchandise_number, so.order_date, e. name ename from inventory.t_stockorder so inner join inventory.t_client c on c.code = so.client_id inner join inventory.t_merchandise m on m.code = so.merchandise_id inner join inventory.t_employee e on e.code = so.operator_id |
現在要在mapper映射文件中添加動態Sql語句,一般情況下映射文件中的resultMap元素中只可以有一個association,那如何添加多個association到resultMap中呢?正確代碼如下圖所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
< resultMap id = "StockorderMap" type = "com.lwz.entity.Stockorder" > < id property = "id" column = "id" /> < result property = "code" column = "code" /> < result property = "merchandiseNumber" column = "merchandise_number" /> < result property = "orderDate" column = "order_date" /> < association property = "client" javaType = "Client" resultMap = "ClientResultMap" ></ association > < association property = "merchandise" javaType = "Merchandise" resultMap = "MerchandiseResultMap" ></ association > < association property = "employee" javaType = "Employee" resultMap = "EmployeeResultMap" ></ association > </ resultMap > < resultMap id = "ClientResultMap" type = "com.lwz.entity.Client" > < id property = "code" column = "code" /> < result property = "name" column = "cname" /> </ resultMap > < resultMap id = "MerchandiseResultMap" type = "com.lwz.entity.Merchandise" > < id property = "code" column = "code" /> < result property = "name" column = "mname" /> </ resultMap > < resultMap id = "EmployeeResultMap" type = "com.lwz.entity.Employee" > < id property = "code" column = "code" /> < result property = "name" column = "ename" /> </ resultMap > <!--通過實體作為篩選條件查詢--> < select id = "queryAll" resultMap = "StockorderMap" > select so.id, so.code, c.name cname, m.name mname, so.merchandise_number, so.order_date, e.name ename from inventory.t_stockorder so inner join inventory.t_client c on c.code = so.client_id inner join inventory.t_merchandise m on m.code = so.merchandise_id inner join inventory.t_employee e on e.code = so.operator_id < where > < if test = "id != null" > and id = #{id} </ if > < if test = "code != null and code != ''" > and so.code = #[code] </ if > < if test = "client != null" > and client_id = #{client.code} </ if > < if test = "merchandise != null" > and merchandise_id = #{merchandise.code} </ if > < if test = "merchandiseNumber != null" > and merchandise_number = #{merchandiseNumber} </ if > < if test = "orderDate != null" > and order_date = #{orderDate} </ if > < if test = "employee != null" > and operator_id = #{employee.code} </ if > </ where > </ select > |
resultMap中association的各個屬性的含義:
- property:映射實體類的字段或屬性。
- colum:數據庫的列名或者列標簽別名。
- javaTyp:完整java類名或別名。
- jdbcType支持的JDBC類型列表列出的JDBC類型。這個屬性只在insert,update或delete的時候針對允許空的列有用。
- resultMap: 一個可以映射聯合嵌套結果集到一個適合的對象視圖上的ResultMap。這是一個替代的方式去調用另一個select語句。
到此這篇關于MyBatis映射文件resultMap元素中使用多個association的方法的文章就介紹到這了,更多相關MyBatis 多個association內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_43894879/article/details/106770531