jdbcTemplate 更新中的 Spring 瞬态数据访问资源异常

Posted

技术标签:

【中文标题】jdbcTemplate 更新中的 Spring 瞬态数据访问资源异常【英文标题】:Spring Transient Data Access Resource Exception in jdbcTemplate update 【发布时间】:2015-06-27 09:02:14 【问题描述】:

我有一种方法可以检测列的重复条目:

(我正确地注入到jdbcTemplate

private boolean isDuplicate(String username) 

    String sql = " select username from users where username=?";
    int result = jdbcTemplate.update(sql, new Object[]username, String.class);

    return result;

但我在运行时遇到了这个异常:

org.springframework.dao.TransientDataAccessResourceException: 

PreparedStatementCallback; SQL [ select username from users where username=?]; Invalid argument value: java.lang.ArrayIndexOutOfBoundsException; 

nested exception is java.sql.SQLException: Invalid argument value: java.lang.ArrayIndexOutOfBoundsException

【问题讨论】:

一开始你不是通过模板update,而是queryForObject。其次,您返回一个用户名,即String。不是整数或布尔值。 【参考方案1】:

我们可以像这样使用jdbcTemplatequeryForList()方法:

results = jdbcTemplate.queryForList(sql,new Object[]username,String.class);

if(results.isEmpty()
  //no duplicate


else
  //duplicate

其中resultsList<String>

【讨论】:

以上是关于jdbcTemplate 更新中的 Spring 瞬态数据访问资源异常的主要内容,如果未能解决你的问题,请参考以下文章

阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用

使用spring jdbctemplate更新一行

Spring 从入门到精通系列 11—— Spring 中的 JdbcTemplate

Spring的JdbcTemplate

Spring Boot:整合JdbcTemplate

学习笔记——定义切面优先级 ;Spring中的JdbcTemplate;JdbcTemplate的常用API