Mybatis注解方式完成輸入?yún)?shù)為list的SQL語(yǔ)句拼接方式
Mybatis注解完成輸入?yún)?shù)為list的SQL語(yǔ)句拼接
首先將list集合拼接成一個(gè)"1,2,3,4"格式的字符串
然后將這個(gè)字符串封裝到一個(gè)類中:TyreInfoIdStr
這里的@SelectProvider是調(diào)用一個(gè)外部的類的方法的返回值作為sql語(yǔ)句。
在這個(gè)方法中拼接SQL語(yǔ)句與list集合的字符串,我這里是提前拼接過(guò)了。
拼接查詢條件為list集合的sql函數(shù)
當(dāng)deptId 為1時(shí) sql語(yǔ)句不做更改
當(dāng)deptId 為其他數(shù)字時(shí) list中的id項(xiàng)作為sql查詢條件
剛開(kāi)始編寫(xiě)的時(shí)候思路是用or語(yǔ)句進(jìn)行循環(huán)遍歷 重復(fù)加上or的sql語(yǔ)句來(lái)查詢
發(fā)現(xiàn)比較復(fù)雜 最后采取了sql的in函數(shù)來(lái)實(shí)現(xiàn)
public String getDeptIdSql(List<Long> deptIdList){ Iterator<Long> it = deptIdList.iterator(); //當(dāng)部門id為1時(shí) 不采用篩選 while(it.hasNext()){ Long deptId = it.next(); if(deptId == 1){ return ""; } } //拼接in條件語(yǔ)句 String s = ""; for(int i = 0; i < deptIdList.size();i++){ if(i!=(deptIdList.size()-1)){ s += deptIdList.get(i) + ","; }else{ s += deptIdList.get(i); } } String sql = " and mtMaintenanceStandard.dept_Id in (" + s + ") "; return sql; }
編寫(xiě)完成后發(fā)現(xiàn)函數(shù)有可以提高函數(shù)的復(fù)用性,將mtMaintenanceStandard.dept_Id設(shè)為傳入的變量
最后得到
public String getDeptIdSql(String condition,List<Long> deptIdList){ Iterator<Long> it = deptIdList.iterator(); //當(dāng)部門id為1時(shí) 不采用篩選 while(it.hasNext()){ Long deptId = it.next(); if(deptId == 1){ return ""; } } //拼接in條件語(yǔ)句 String s = ""; for(int i = 0; i < deptIdList.size();i++){ if(i!=(deptIdList.size()-1)){ s += deptIdList.get(i) + ","; }else{ s += deptIdList.get(i); } } String sql = " and " + condition + " in (" + s + ") "; return sql; }
更為通用的版本是不用判斷deptId是否為1
public String getDeptIdSql(String condition,List<Long> deptIdList){ String s = ""; for(int i = 0; i < deptIdList.size();i++){ if(i!=(deptIdList.size()-1)){ s += deptIdList.get(i) + ","; }else{ s += deptIdList.get(i); } } String sql = " and " + condition + " in (" + s + ") "; return sql; }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java監(jiān)聽(tīng)器ActionListener與MouseListener的執(zhí)行順序說(shuō)明
這篇文章主要介紹了Java監(jiān)聽(tīng)器ActionListener與MouseListener的執(zhí)行順序說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java中如何對(duì)字符串進(jìn)行utf-8編碼
這篇文章主要介紹了Java中如何對(duì)字符串進(jìn)行utf-8編碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04基于Java8實(shí)現(xiàn)提高Excel讀寫(xiě)效率
這篇文章主要介紹了基于Java8實(shí)現(xiàn)提高Excel讀寫(xiě)效率,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11springboot實(shí)現(xiàn)rabbitmq的隊(duì)列初始化和綁定
這篇文章主要介紹了springboot實(shí)現(xiàn)rabbitmq的隊(duì)列初始化和綁定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Java線程間通信不同步問(wèn)題原理與模擬實(shí)例
這篇文章主要介紹了Java線程間通信不同步問(wèn)題,結(jié)合實(shí)例形式分析了java線程間通信不同步問(wèn)題的原理并模擬實(shí)現(xiàn)了線程間通信不同步情況下的異常輸出,需要的朋友可以參考下2019-10-10Spring之關(guān)于PropertyDescriptor的擴(kuò)展剖析
這篇文章主要介紹了Spring之關(guān)于PropertyDescriptor的擴(kuò)展剖析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Spring mvc防止數(shù)據(jù)重復(fù)提交的方法
這篇文章主要為大家詳細(xì)介紹了Spring mvc防止數(shù)據(jù)重復(fù)提交的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理
這篇文章主要介紹了java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Java實(shí)現(xiàn)解壓zip壓縮包的兩種方法(支持多層級(jí))
壓縮文件在生活中經(jīng)常能用到,在Java中提供了壓縮和解壓縮文件的功能,本文主要介紹了Java實(shí)現(xiàn)解壓zip壓縮包的兩種方法(支持多層級(jí)),感興趣的可以了解一下2024-03-03