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) { /** 如果當前部門下沒用戶的話,就傳個 "" 過去 由于 mybatis 解析后空字符串 * 后是什么都沒有, 這里用 in () 如果這樣,就會異常 ,所以當用戶為空的話, * 傳 "''" 這樣解析后 變成了 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 是獲取某幾個 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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼
事件監(jiān)聽是一種機制,可以定義和觸發(fā)自定義的事件,以及在應(yīng)用程序中注冊監(jiān)聽器來響應(yīng)這些事件,本文主要介紹了SpringBoot實現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼,感興趣的可以了解一下2024-08-08Java中SpringBoot的@Transactional原理
這篇文章主要介紹了Java中SpringBoot的@Transactional原理,面向元數(shù)據(jù)遍歷已經(jīng)成為越來越多開發(fā)者的偏好,因此原理從Springboot的EnableTransactionManagement注解說起,需要的朋友可以參考下2023-07-07SpringBoot+SpringBatch+Quartz整合定時批量任務(wù)方式
這篇文章主要介紹了SpringBoot+SpringBatch+Quartz整合定時批量任務(wù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09tdesign的文件上傳功能實現(xiàn)(微信小程序+idea的springboot)
這篇文章主要介紹了tdesign的文件上傳(微信小程序+idea的springboot)的相關(guān)知識,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-09-09利用反射實現(xiàn)Excel和CSV 轉(zhuǎn)換為Java對象功能
將Excel或CSV文件轉(zhuǎn)換為Java對象(POJO)以及將Java對象轉(zhuǎn)換為Excel或CSV文件可能是一個復(fù)雜的過程,但如果使用正確的工具和技術(shù),這個過程就會變得十分簡單,在本文中,我們將了解如何利用一個Java反射的庫來實現(xiàn)這個功能,需要的朋友可以參考下2023-11-11SpringBoot項目集成Flyway進行數(shù)據(jù)庫版本控制的詳細教程
這篇文章主要介紹了SpringBoot項目集成Flyway進行數(shù)據(jù)庫版本控制,本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java設(shè)計模式之工廠模式實現(xiàn)方法詳解
這篇文章主要介紹了Java設(shè)計模式之工廠模式實現(xiàn)方法,結(jié)合實例形式較為詳細的分析了工廠模式的分類、原理、實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下2017-12-12