MyBatis——@Result注解column参数传递——父查询函数的参数传递到子查询
問(wèn)題描述
假設(shè)a方法中傳入一個(gè)帶查詢參數(shù)x
但是a方法的查詢結(jié)果中不包含參數(shù)x
而子查詢里也需要參數(shù)x
如何在子查詢b中帶入?yún)?shù)x
/*** 按User表中platform查詢User*/@Select("select * from user where pid = #{id}")List<User> findUsers(int id);/*** 一對(duì)多查詢*/@Select("select * from platform where 1 = 1")@Results({/*@Result(property = "id" , column = "id"),*/@Result(property = "users",/*javaType = List.class,*///對(duì)platform表中id屬性進(jìn)行一對(duì)多查詢column = "id",many = @Many(select = "mybatis.mapper.HelloMapper.findUsers"))})List<Platform> getPlatforms();- findUsers需要傳入一個(gè)參數(shù) -> 即使用platform表中id 可自動(dòng)帶入進(jìn)行一對(duì)多查詢
- @Result中column = "id"
- 表示把父查詢中id列每個(gè)值傳遞給子查詢進(jìn)行一對(duì)多查詢
官方文檔
| column | 數(shù)據(jù)庫(kù)的列名或者列標(biāo)簽別名。與傳遞給resultSet.getString(columnName)的參數(shù)名稱(chēng)相同。注意: 在處理組合鍵時(shí),您可以使用column=“{prop1=col1,prop2=col2}”這樣的語(yǔ)法,設(shè)置多個(gè)列名傳入到嵌套查詢語(yǔ)句。這就會(huì)把prop1和prop2設(shè)置到目標(biāo)嵌套選擇語(yǔ)句的參數(shù)對(duì)象中。 |
問(wèn)題分析
根據(jù)官方文檔,column是從resultSet獲取,所以無(wú)法直接獲取父函數(shù)的參數(shù)
可以把所需參數(shù)放進(jìn)SQL查詢中保存起來(lái),并取一個(gè)別名。
解決方案
表 shoppingcart :購(gòu)物車(chē) 主要包含商家id字段,商品id及信息,顧客id等等
為了某個(gè)顧客顯示先購(gòu)物車(chē)中商家,再顯示商家中商品,需要傳入一個(gè)顧客id
查詢商家需要顧客id作為查詢條件,查詢商品需要商家id和顧客id兩個(gè)條件
如果按以上的方法,(商家表中沒(méi)有顧客id)無(wú)法傳遞顧客參數(shù)
(假設(shè)僅傳遞一個(gè)商家id參數(shù)的話,子查詢兩個(gè)參數(shù)都會(huì)被設(shè)定為商家id值進(jìn)行查詢)
思路:把顧客id放進(jìn)查詢中保存起來(lái),并給他取一個(gè)別名
這樣之后,顧客id即可傳遞給子查詢
?
表示把id列和consumerId列取出
id列值使用salerId,consumerId列使用consumerId 表示(類(lèi)似別名,對(duì)應(yīng)子查詢參數(shù))
然后以這兩個(gè)參數(shù)進(jìn)行子查詢
參考文章
https://blog.csdn.net/weixin_43297055/article/details/93635950
https://blog.csdn.net/weixin_43272781/article/details/106439505
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的MyBatis——@Result注解column参数传递——父查询函数的参数传递到子查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MyBatis——@Result注解co
- 下一篇: 《IBM-PC汇编语言程序设计》(第2版