Mybatis many=@Many的傳值問題解決
更新時間:2025年11月28日 10:08:49 作者:alwaysonline1204
本文詳細(xì)介紹了在MyBatis通過主查詢將單個或多個值傳遞給子查詢的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
1. 給子查詢傳遞一個值
@Select({“select * from user where username = #{userName}”}) ①
@Results({
@Result(
property = “id”, column = “id” ②
),
@Result(
property = “roleList”,column=“id”, ③
many = @Many(select = “com.x.dt.mapper.UserMapper.selectByUserNameRoleId”)
)})
List selectByName(String userName);
@Select({"select id from role where id in(select role_id from user_role where user_id=#{userId})"})
List<Role> selectByUserNameRoleId(@Param("userId") String userId);
三個表
用戶表: user
角色表:role
用戶角色關(guān)聯(lián)表:user_role
- ①主查詢,查詢得到結(jié)果;
- 將主查詢結(jié)果里面的id字段賦給③;
- ③里面的id為子查詢的條件,③的id與①主查詢里面的數(shù)據(jù)庫字段相對應(yīng);
- selectByUserNameRoleId通過③的coulmn為查詢條件。
2. 給子查詢傳遞多個值

@Mapper---------------主查詢和子查詢都要打上注解Mapper,才可以映射過去
@Select("<script>"
+ "SELECT user_id "
+ "CASE "
+ "WHEN (#{userName} = '' or #{userName} is null) "
+ "THEN NULL "
+ "ELSE #{userName} END AS user_name"---------------------核心語句,注意這邊是=不是==
+ "FROM sys_user "
+ "</script>")
@Results({
@Result(column = "{userName=user_name,userId=user_id}", property = "userList", javaType = List.class,
many = @Many(select = "com.dao.xxxDao.searchXxxByName"))--------------------------property是查詢返回映射到DTO里面的變量,在column里面放置傳到查多語句中的參數(shù)userName,userId
})
List<XxxDto> searchXxx(@Param("userName") String userName);---------傳遞過去的參數(shù)
@Mapper
@Select("<script>"
+ "SELECT * "
+ "FROM sys_detail "
+ "<if test=\"userId!=null \"> "
+ "AND user_id =#{userId} "
+ "</if> "
+ "<if test=\"userName!=null and userName!=\'\' \"> "
+ "AND user_name=#{userName} "
+ "</if> "
+ "</script>")
List<SysDetail> searchXxxByName(Map<String, String> param);------對應(yīng)的參數(shù)一定要是Mapper
到此這篇關(guān)于Mybatis many=@Many的傳值問題解決的文章就介紹到這了,更多相關(guān)Mybatis many=@Many傳值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實現(xiàn)微信公眾平臺朋友圈分享功能詳細(xì)代碼
這篇文章主要介紹了Java實現(xiàn)微信公眾平臺朋友圈分享功能詳細(xì)代碼,小編覺得挺不錯的,這里分享給大家,供需要的朋友參考。2017-11-11
SpringCloud灰度發(fā)布的設(shè)計與實現(xiàn)詳解
這篇文章主要介紹了SpringCloud灰度發(fā)布的設(shè)計與實現(xiàn)詳解,灰度從字面意思理解就是存在于黑與白之間的一個平滑過渡的區(qū)域,所以說對于互聯(lián)網(wǎng)產(chǎn)品來說,上線和未上線就是黑與白之分,而實現(xiàn)未上線功能平穩(wěn)過渡的一種方式就叫做灰度發(fā)布,需要的朋友可以參考下2023-09-09
Clojure?與Java對比少數(shù)據(jù)結(jié)構(gòu)多函數(shù)勝過多個單獨類的優(yōu)點
這篇文章主要介紹了Clojure?與Java對比少數(shù)據(jù)結(jié)構(gòu)多函數(shù)勝過多個單獨類的優(yōu)點,在Clojure中,我們一次又一次地使用相同的數(shù)據(jù)結(jié)構(gòu),并在其上運行許多函,更多相關(guān)介紹需要的朋友可以參考一下下面文章內(nèi)容2022-06-06
SpringBoot對敏感數(shù)據(jù)進(jìn)行脫敏的全過程
在項目開發(fā)中,數(shù)據(jù)庫經(jīng)常會存儲大量用戶敏感信息,例如手機號、身份證號、郵箱、銀行卡號、家庭地址、姓名等數(shù)據(jù),如果后端直接把原始數(shù)據(jù)返回給前端,會造成嚴(yán)重的用戶隱私泄露問題,所以本文給大家介紹了SpringBoot對敏感數(shù)據(jù)進(jìn)行脫敏的全過程,需要的朋友可以參考下2026-04-04

