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

 更新时间:2021年11月30日 11:03:27   作者:我滴太阳233  
这篇文章主要介绍了Mybatis注解方式完成输入参数为list的SQL语句拼接方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis注解完成输入参数为list的SQL语句拼接

首先将list集合拼接成一个"1,2,3,4"格式的字符串

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

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

在这个方法中拼接SQL语句与list集合的字符串,我这里是提前拼接过了。

拼接查询条件为list集合的sql函数

当deptId 为1时 sql语句不做更改

当deptId 为其他数字时 list中的id项作为sql查询条件

刚开始编写的时候思路是用or语句进行循环遍历 重复加上or的sql语句来查询

发现比较复杂 最后采取了sql的in函数来实现

public String getDeptIdSql(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 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;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring aop失效的几种解决方案

    Spring aop失效的几种解决方案

    这篇文章主要介绍了Spring aop失效的几种解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringBoot validator参数验证restful自定义错误码响应方式

    SpringBoot validator参数验证restful自定义错误码响应方式

    这篇文章主要介绍了SpringBoot validator参数验证restful自定义错误码响应方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring Data Jpa框架最佳实践示例

    Spring Data Jpa框架最佳实践示例

    这篇文章主要为大家介绍了Spring Data Jpa框架最佳实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-02-02
  • Spring5源码解析之Spring中的异步和计划任务

    Spring5源码解析之Spring中的异步和计划任务

    本篇文章主要介绍了Spring5源码解析之Spring中的异步和计划任务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-10-10
  • springboot+dubbo+validation 进行rpc参数校验的实现方法

    springboot+dubbo+validation 进行rpc参数校验的实现方法

    这篇文章主要介绍了springboot+dubbo+validation 进行rpc参数校验的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • springboot实现简单的消息对话的示例代码

    springboot实现简单的消息对话的示例代码

    本文主要介绍了springboot实现简单的消息对话的示例代码,可以使用WebSocket技术,WebSocket是一种在客户端和服务器之间提供实时双向通信的协议,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java之Spring整合Junit

    Java之Spring整合Junit

    Java Spring框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit
    2023-04-04
  • 一文掌握JVM Safe Point

    一文掌握JVM Safe Point

    关于 Safe Point 是 JVM 中很关键的一个概念,但我估计有不少同学不是很懂,于是今天跟大家来深入聊聊 Safe Point,通过本文学习你会了解什么是 Safe Point?为啥需要 Safe Point?Safe Point 与 Stop the World 的关系?感兴趣的朋友一起看看吧
    2022-10-10
  • Java轻松实现在Excel中添加超链接功能

    Java轻松实现在Excel中添加超链接功能

    这篇文章主要为大家详细介绍了Java如何轻松实现在Excel中添加超链接功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • java实现对excel文件的处理合并单元格的操作

    java实现对excel文件的处理合并单元格的操作

    这篇文章主要介绍了java实现对excel文件的处理合并单元格的操作,开头给大家介绍了依赖引入代码,表格操作的核心代码,代码超级简单,需要的朋友可以参考下
    2021-07-07

最新评论