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

相关推荐

  • MySQL的优化小调整有哪些

    技术MySQL的优化小调整有哪些本篇文章为大家展示了MySQL的优化小调整有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我并不期望成为一个专家级的 DBA,但是,在我优化

    攻略 2021年10月25日
  • 酒可以快递吗,快递有权拒绝酒类邮寄吗

    技术酒可以快递吗,快递有权拒绝酒类邮寄吗快递可以寄烟吗酒可以快递吗?可以的,但是用数量的限制。
    根据《烟草专卖法》二十三条规定,邮寄烟草制品不得超过国务院有关部门的规定的限量,那么在这个方面我们国家(烟草)局规定,邮寄卷

    生活 2021年10月31日
  • README

    技术README READMEpycnblog
    博客园上传markdown文件 https://www.cnblogs.com/df888/p/11826480.html
    功能一键拖拽上传
    默认“未发布

    礼包 2021年12月14日
  • oneyear,oneyearago是什么意思

    技术oneyear,oneyearago是什么意思oneyearago 的中文意思是“一年前,”但三个单词不能一起连写,正确的写法应该是oneyear: one year ago. 这句短语可用在句首或句尾,在时间上通常

    生活 2021年10月21日
  • https认证是怎样的

    技术https认证是怎样的https认证是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用https过程中有三个角色:CA认证机构: 证书颁发机

    攻略 2021年11月12日
  • 怎么解决mysql的报错[ERROR] Native table 'performance_schema'问题

    技术怎么解决mysql的报错[ERROR] Native table performance_schema问题本篇内容主要讲解“怎么解决mysql的报错[ERROR] Native table performance_s

    攻略 2021年11月19日