Mybatis many=@Many的傳值問題解決
更新時間:2025年11月28日 10:08:49 作者:alwaysonline1204
本文詳細介紹了在MyBatis通過主查詢將單個或多個值傳遞給子查詢的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
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
用戶角色關聯(lián)表:user_role
- ①主查詢,查詢得到結果;
- 將主查詢結果里面的id字段賦給③;
- ③里面的id為子查詢的條件,③的id與①主查詢里面的數據庫字段相對應;
- 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里面放置傳到查多語句中的參數userName,userId
})
List<XxxDto> searchXxx(@Param("userName") String userName);---------傳遞過去的參數
@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);------對應的參數一定要是Mapper
到此這篇關于Mybatis many=@Many的傳值問題解決的文章就介紹到這了,更多相關Mybatis many=@Many傳值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Rhino讓java執(zhí)行javascript的方法實例
這篇文章主要介紹了java使用Rhino執(zhí)行javascript的方法,Rhino由Mozilla開發(fā),是 JavaScript 一種基于Java的實現2013-12-12
java 使用ImageIO.writer從BufferedImage生成jpeg圖像遇到問題總結及解決
這篇文章主要介紹了java 使用ImageIO.writer從BufferedImage生成jpeg圖像遇到問題總結及解決的相關資料,需要的朋友可以參考下2017-03-03
Spring Boot Actuator應用監(jiān)控與管理的詳細步驟
SpringBootActuator是SpringBoot的監(jiān)控工具,提供健康檢查、性能指標、日志管理等核心功能,支持自定義和擴展端點,并通過SpringSecurity配置安全權限,便于生產環(huán)境應用監(jiān)控與管理,本文給大家介紹Spring Boot Actuator應用監(jiān)控與管理的相關知識,感興趣的朋友一起看看吧2025-07-07
Java的Hibernate框架數據庫操作中鎖的使用和查詢類型
這篇文章主要介紹了Java的Hibernate框架數據庫操作中鎖的使用和查詢類型,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2016-01-01

