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

相关推荐

  • SequoiaDB 分布式事务实现原理是什么

    技术SequoiaDB 分布式事务实现原理是什么这篇文章将为大家详细讲解有关SequoiaDB 分布式事务实现原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1分

    攻略 2021年11月23日
  • 抖音刷1万粉丝多少钱,抖音10万粉丝号出售

    技术抖音刷1万粉丝多少钱,抖音10万粉丝号出售抖音刷1万粉丝多少钱,抖音10万粉丝号出售
    愚蠢的价格app里有无尽的优惠券。不需要依赖别人。想用就用,比加群方便多了。你只需要一个邀请码:66650,随时随地享受优惠!

    测评 2021年11月13日
  • 怎样进行Vue2移动端开发环境搭建

    技术怎样进行Vue2移动端开发环境搭建这期内容当中小编将会给大家带来有关怎样进行Vue2移动端开发环境搭建,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。这里给出基于 Vue2 的移动端

    攻略 2021年11月16日
  • 为什么开发Deno

    技术为什么开发Deno本篇内容主要讲解“为什么开发Deno”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“为什么开发Deno”吧!0. 为什么开发 Deno?这是我上周做的一张

    攻略 2021年11月11日
  • docker安装部署redis用docker-compose启动设置密码

    技术docker安装部署redis用docker-compose启动设置密码 docker安装部署redis用docker-compose启动设置密码搜索镜像
    [root@localhost ~]# d

    礼包 2021年11月26日
  • Html+JS+PowerShell如何打造Web版AD管理系统

    技术Html+JS+PowerShell如何打造Web版AD管理系统这篇文章主要介绍Html+JS+PowerShell如何打造Web版AD管理系统,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!利

    攻略 2021年11月24日