如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式

技术如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式这篇文章给大家分享的是有关如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式的内容。小编觉得挺实用的,因此分享给大家做个参

本文是关于如何使用Mybatis注释来完成SQL语句与输入参数列表的拼接。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

00-1010首先,将列表集拼接成“1,2,3,4”格式字符串。

然后将这个字符串封装在一个类中:TyreInfoIdStr。

如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式

这里的@SelectProvider是以sql语句调用外部类的方法的返回值。

如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式

在这个方法中,SQL语句和列表集的字符串是拼接的,这是我在这里预先拼接的。

如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式

00-1010当deptId为1时,sql语句不会改变。

当deptId是另一个数字时,列表中的Id项用作sql查询条件

在开始编写时,想法是使用or语句来迭代、重复和添加or sql语句来查询。

人们发现这很复杂。最后,采用sql的in函数来实现。

public stringgetdeptidsql(listlongnitillist){ 0

IteratorLongit=deptidlist . iterator();

//部门标识为1时不过滤。

while(it . HasNeXt()){ 0

陇肽=it . next();

if(DepTiD==1){ 0

返回“”;

}

}

//条件语句中的拼接

字符串=' ';

for(inti=0;ideptidlist . size();I){ 0

如果(我!=(DepTidList . size()-1)){ 0

s=deptIdList.get(i)',';

}else{

(=NationalBureauofStandards)国家标准局

p;               s += deptIdList.get(i);
                }
          }
          String sql = " and mtMaintenanceStandard.dept_Id in (" + s + ") ";
          return sql;
}

编写完成后发现函数有可以提高函数的复用性,将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;
}

感谢各位的阅读!关于“如何使用Mybatis注解方式完成输入参数为list的SQL语句拼接方式”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/126938.html

(0)

相关推荐

  • 手工纸灯笼制作,幼儿园手工制作灯笼需要什么材

    技术手工纸灯笼制作,幼儿园手工制作灯笼需要什么材准备材料手工纸灯笼制作:一次性纸杯两只,红线若干,剪刀,胶水或双面胶,放焰火剩余的手柄,红色颜料和水粉笔。具体步骤:1.取一只纸杯,尽量选择横竖有参考图案的。沿纵向条纹均匀

    生活 2021年10月30日
  • leetcode怎么删除排序链(leetcode 删除数组元素)

    技术LeetCode如何删除链表中指定的所有元素这篇文章主要为大家展示了“LeetCode如何删除链表中指定的所有元素”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetC

    攻略 2021年12月15日
  • javascript 中string是不是对象

    技术javascript 中string是不是对象这篇文章主要介绍了javascript 中string是不是对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解

    攻略 2021年11月18日
  • typescript类属性取值耗时(typescript 特殊符号)

    技术TypeScript数据类型中模板字面量的示例分析这篇文章主要为大家展示了“TypeScript数据类型中模板字面量的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下

    攻略 2021年12月19日
  • 体育模拟

    技术体育模拟 体育模拟import randomdef printInfo(): print("模拟体育竞技") print("学号后两位:26,曾俊谌")
    def getInputs():

    礼包 2021年11月14日
  • java lock锁的使用场景(javareentrantlockislock)

    技术Java读写锁ReentrantReadWriteLock怎么使用这篇文章主要介绍“Java读写锁ReentrantReadWriteLock怎么使用”,在日常操作中,相信很多人在Java读写锁ReentrantRe

    攻略 2021年12月21日