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