Java使用Spring JdbcTemplate向in语句中传递参数的教程详解

 更新时间:2023年07月05日 11:22:55   作者:老鼠只爱大米  
这篇文章主要给大家介绍Java如何使用Spring JdbcTemplate向in语句中传递参数,文中有详细的流程步骤和代码示例,需要的朋友可以参考下

一、Jdbctemplate方式

传统的Jdbctemplate类无法直接向in语句传递参数,需要通过字符串拼接的方式来实现。例如:

1.常见的通过占位符查询结果方式(无法适用in语句)

//查询id等于123的用户信息
String sql = "select * from user where id = ?"; 
Map<String, Object> args = new HashMap<>();
args.put("id", 123);
jdbcTemplate.queryForList(sql, args , User.class )

2.如果使用上述方式向in语句中传递参数

//查询id为1,2,3的用户信息
String sql = "select * from user where id in (?)"; 
Map<String, Object> args = new HashMap<>();
int[] ids = {1,2,3}
args.put("id", ids);
jdbcTemplate.queryForList(sql, args , User.class ); 

这里查询语句被替换后如下,执行时会报错

//不符合sql语句规范
select * from user where id in ([1,2,3])

3.解决方案:使用字符串拼接

String ids = "1,2,3";
String sql = "select * from user where id in (" + ids +")";

如果入参是字符串,要用两个单引号' 内容'引起来,这样就满足SQL的语法,例如:

String ids = "'1','2','3'";
String sql = "select * from user where id in (" + ids +")";

二、NamedParameterJdbcTemplate方式

Jdbctemplate是比较底层的类,因此功能比较有局限性。NamedParameterJdbcTemplate是对Jdbctemplate的再次封装,它可以使用具名参数来绑定Sql参数。一系列具名参数组成一个map传入,这样传参的顺序就没有限制了。

使用NamedParameterJdbcTemplate实现in语句的传参非常简单,如下:

String sql = "select * from user where name in (:names)";
String[] arr = {"张三","李四","王五"};
ArrayList<String> names = new ArrayList<String>(Arrays.asList(arr));
Map<String, Obeject> args = new HashMap<String,Object>();
args.put("names", names);
NamedParameterJdbcTemplate jdbcTmeplate = new NameParameterJdbcTemplate(jdbctemplate);
jdbcTemplate.queryForList(sql,args);

三、总结

使用Jdbctemplate传递给in语句参数时,如果参数是固定的,那么拼接成字符串很简单。但是如果参数不固定,是通过数组或列表给出的。那么在进行字符串拼接时,就会比较复杂麻烦,需要将数组的值转换成字符串,每个元素用逗号分隔并用单引号括起来。综合比较,给in语句传递参数推荐使用NamedParameterJdbcTemplate类来实现。

到此这篇关于Java使用Spring JdbcTemplate向in语句中传递参数的教程详解的文章就介绍到这了,更多相关Java Spring JdbcTemplate传递参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring retry实现方法请求重试的使用步骤

    spring retry实现方法请求重试的使用步骤

    这篇文章主要介绍了spring retry实现方法请求重试及使用步骤,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • spring boot 静态资源处理方法

    spring boot 静态资源处理方法

    本篇文章主要介绍了spring boot 静态资源处理方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Spring中Bean初始化和销毁的方式总结

    Spring中Bean初始化和销毁的方式总结

    这篇文章主要为大家整理了Spring中Bean初始化和销毁的多种方式,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下
    2023-04-04
  • mybatis-plus主键id生成、字段自动填充的实现代码

    mybatis-plus主键id生成、字段自动填充的实现代码

    这篇文章主要介绍了mybatis-plus主键id生成、字段自动填充的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • maven在settings.xml和pom.xml中指定jdk版本编译的方法

    maven在settings.xml和pom.xml中指定jdk版本编译的方法

    在开发Java应用时,通常需要指定要使用的Java版本,下面这篇文章主要给大家介绍了关于maven在settings.xm和pom.xml中指定jdk版本编译的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • IDEA让包分层显示的实现方式

    IDEA让包分层显示的实现方式

    这篇文章主要介绍了IDEA让包分层显示的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring中的ApplicationRunner接口的使用详解

    Spring中的ApplicationRunner接口的使用详解

    这篇文章主要介绍了Spring中的ApplicationRunner接口的使用详解,ApplicationRunner使用起来很简单,只需要实现CommandLineRunner或者ApplicationRunner接口,重写run方法就行,需要的朋友可以参考下
    2023-11-11
  • Java实战之客户信息管理系统

    Java实战之客户信息管理系统

    这篇文章主要介绍了Java实战之客户信息管理系统,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 使用java判断输入年份是否为闰年完整代码

    使用java判断输入年份是否为闰年完整代码

    闰年的引入确保了我们的日历与地球运行轨道的对齐,使得时间的计算更加准确,在编程中判断给定年份是否为闰年是一项常见的任务,这篇文章主要给大家介绍了关于使用java判断输入年份是否为闰年的相关资料,需要的朋友可以参考下
    2023-10-10
  • Java从同步容器到并发容器的操作过程

    Java从同步容器到并发容器的操作过程

    这篇文章主要介绍了Java从同步容器到并发容器的操作过程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10

最新评论