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

