Mybatis使用@Select注解sql中使用in問題
Mybatis使用@Select注解sql中使用in
mapper
@Select("SELECT u.* , ur.role_id , r.role_name from sys_user_role ur , sys_role r , sys_user u ,sys_user_depart ud " +
"where ur.role_id = r.id and ur.user_id = u.id and u.id = ud.user_id " +
"and ud.create_user_id in (${createUserId})")
public Page<SysRoleDeptVO> getUserByCreateUserIds(Page page, @Param("createUserId") String createUserId);service
@Override
public Page<SysRoleDeptVO> getByUserIds(Page<SysRoleDeptVO> page, List<String> userIds) {
/** 如果當(dāng)前部門下沒用戶的話,就傳個(gè) "" 過去 由于 mybatis 解析后空字符串
* 后是什么都沒有, 這里用 in () 如果這樣,就會(huì)異常 ,所以當(dāng)用戶為空的話,
* 傳 "''" 這樣解析后 變成了 in ('')
* */
String userids = "''" ;
if(userIds != null && userIds.size() != 0){
StringBuilder stringBuilder = new StringBuilder("");
for (int i = 0; i < userIds.size(); i++) {
stringBuilder.append("'");
stringBuilder.append(userIds.get(i));
stringBuilder.append("'");
stringBuilder.append(",");
}
userids = stringBuilder.substring(0, stringBuilder.length() - 1);
}
return userMapper.getByUserIds(page,userids);mapper防止轉(zhuǎn)義字符
<![CDATA[ ? ? ?]]>?
Mybatis在@Select寫IN SQL
簡單介紹在 MyBatis 的注解方式中,寫包含 in 語法的 SQL
直接了斷看下面的代碼,SQL 是獲取某幾個(gè) ID 的文章
@Select("<script>" +
? ? ? ? ? ? "select * from article where id in " +
? ? ? ? ? ? "<foreach item='item' index='index' collection='articleIds' open='(' separator=', ' close=')'>" +
? ? ? ? ? ? ? ? "#{item}" +
? ? ? ? ? ? "</foreach>" +
? ? ? ? "</script>")
List<Article> getArticlesByIds(@Param("articleIds") List<Long> articleIds);總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼
事件監(jiān)聽是一種機(jī)制,可以定義和觸發(fā)自定義的事件,以及在應(yīng)用程序中注冊(cè)監(jiān)聽器來響應(yīng)這些事件,本文主要介紹了SpringBoot實(shí)現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼,感興趣的可以了解一下2024-08-08
Java中SpringBoot的@Transactional原理
這篇文章主要介紹了Java中SpringBoot的@Transactional原理,面向元數(shù)據(jù)遍歷已經(jīng)成為越來越多開發(fā)者的偏好,因此原理從Springboot的EnableTransactionManagement注解說起,需要的朋友可以參考下2023-07-07
SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式
這篇文章主要介紹了SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
tdesign的文件上傳功能實(shí)現(xiàn)(微信小程序+idea的springboot)
這篇文章主要介紹了tdesign的文件上傳(微信小程序+idea的springboot)的相關(guān)知識(shí),本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-09-09
利用反射實(shí)現(xiàn)Excel和CSV 轉(zhuǎn)換為Java對(duì)象功能
將Excel或CSV文件轉(zhuǎn)換為Java對(duì)象(POJO)以及將Java對(duì)象轉(zhuǎn)換為Excel或CSV文件可能是一個(gè)復(fù)雜的過程,但如果使用正確的工具和技術(shù),這個(gè)過程就會(huì)變得十分簡單,在本文中,我們將了解如何利用一個(gè)Java反射的庫來實(shí)現(xiàn)這個(gè)功能,需要的朋友可以參考下2023-11-11
springboot項(xiàng)目如何引用公共模塊的bean
這篇文章主要介紹了springboot項(xiàng)目如何引用公共模塊的bean問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫版本控制的詳細(xì)教程
這篇文章主要介紹了SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫版本控制,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java設(shè)計(jì)模式之工廠模式實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之工廠模式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了工廠模式的分類、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-12-12

