Mybatis使用@Select注解sql中使用in問(wèn)題
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)前部門下沒(méi)用戶的話,就傳個(gè) "" 過(guò)去 由于 mybatis 解析后空字符串 * 后是什么都沒(méi)有, 這里用 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寫(xiě)IN SQL
簡(jiǎn)單介紹在 MyBatis 的注解方式中,寫(xiě)包含 in 語(yǔ)法的 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è)參考,也希望大家多多支持腳本之家。
- MyBatis注解實(shí)現(xiàn)動(dòng)態(tài)SQL問(wèn)題
- MyBatis?@Select注解介紹:基本用法與動(dòng)態(tài)SQL拼寫(xiě)方式
- MyBatis在注解上使用動(dòng)態(tài)SQL方式(@select使用if)
- Mybatis在注解上如何實(shí)現(xiàn)動(dòng)態(tài)SQL
- mybatisplus?@Select注解中拼寫(xiě)動(dòng)態(tài)sql異常問(wèn)題的解決
- Mybatis注解方式完成輸入?yún)?shù)為list的SQL語(yǔ)句拼接方式
- Mybatis SQL注解使用場(chǎng)景分析
相關(guān)文章
SpringBoot實(shí)現(xiàn)事件監(jiān)聽(tīng)(異步執(zhí)行)的示例代碼
事件監(jiān)聽(tīng)是一種機(jī)制,可以定義和觸發(fā)自定義的事件,以及在應(yīng)用程序中注冊(cè)監(jiān)聽(tīng)器來(lái)響應(yīng)這些事件,本文主要介紹了SpringBoot實(shí)現(xiàn)事件監(jiān)聽(tīng)(異步執(zhí)行)的示例代碼,感興趣的可以了解一下2024-08-08Java中SpringBoot的@Transactional原理
這篇文章主要介紹了Java中SpringBoot的@Transactional原理,面向元數(shù)據(jù)遍歷已經(jīng)成為越來(lái)越多開(kāi)發(fā)者的偏好,因此原理從Springboot的EnableTransactionManagement注解說(shuō)起,需要的朋友可以參考下2023-07-07SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式
這篇文章主要介紹了SpringBoot+SpringBatch+Quartz整合定時(shí)批量任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09tdesign的文件上傳功能實(shí)現(xiàn)(微信小程序+idea的springboot)
這篇文章主要介紹了tdesign的文件上傳(微信小程序+idea的springboot)的相關(guān)知識(shí),本文通過(guò)圖文實(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ù)雜的過(guò)程,但如果使用正確的工具和技術(shù),這個(gè)過(guò)程就會(huì)變得十分簡(jiǎn)單,在本文中,我們將了解如何利用一個(gè)Java反射的庫(kù)來(lái)實(shí)現(xiàn)這個(gè)功能,需要的朋友可以參考下2023-11-11springboot項(xiàng)目如何引用公共模塊的bean
這篇文章主要介紹了springboot項(xiàng)目如何引用公共模塊的bean問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本控制的詳細(xì)教程
這篇文章主要介紹了SpringBoot項(xiàng)目集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本控制,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Java設(shè)計(jì)模式之工廠模式實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之工廠模式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了工廠模式的分類、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-12-12