如何使用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)

相关推荐

  • 具里面是两横还是三横,具有人说的具是据还是具

    技术具里面是两横还是三横,具有人说的具是据还是具具字的上半部分是『鼎』具里面是两横还是三横,《說文解字》中注:共置也。从廾,从貝省。古以貝爲貨。字的本意是双手捧着鼎器,准备饭食或酒席,有准备、备办的意思。
    『鼎』字的上面

    生活 2021年10月27日
  • 如何解决RocketMQ主从同步若干问题

    技术如何解决RocketMQ主从同步若干问题这篇文章将为大家详细讲解有关如何解决RocketMQ主从同步若干问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、初识主从

    攻略 2021年10月29日
  • mysql命令的常用参数包括什么(这些mysql常用命令你是否还记得)

    技术MySQL基础常用命令有哪些这篇文章主要为大家展示了“MySQL基础常用命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL基础常用命令有哪些”这篇文章吧。

    攻略 2021年12月24日
  • linux上的并行软件ParaFly怎么用

    技术linux上的并行软件ParaFly怎么用这篇文章将为大家详细讲解有关linux上的并行软件ParaFly怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    攻略 2021年12月10日
  • 如何翻译和解释ethereum web3.js文档

    技术如何进行以太坊web3.js文档翻译及说明今天就跟大家聊聊有关如何进行以太坊web3.js文档翻译及说明,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。web3

    攻略 2021年12月14日
  • 什么是php curl

    技术什么是php curl这篇文章主要讲解了“什么是php curl”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是php curl”吧!

    攻略 2021年11月8日