使用Spring中的jdbcTemplate 时,通过id查询不到结果时返回Incorrect result size: expected 1, actual 0
@Override public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException { List<T> results = query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper, 1)); return DataAccessUtils.requiredSingleResult(results); }
DataAccessUtils.requiredSingleResult(results);这个方法
public static <T> T requiredSingleResult(Collection<T> results) throws IncorrectResultSizeDataAccessException { int size = (results != null ? results.size() : 0); if (size == 0) { throw new EmptyResultDataAccessException(1); } if (results.size() > 1) { throw new IncorrectResultSizeDataAccessException(1, size); } return results.iterator().next(); }
结果返回0和大于一个都会抛出异常,我们使用这个方法是期望返回一个对象的,但是可能返回0,我们需要的是null而不是异常,可以使用DataAccessUtils.uniqueResult(query);方法
/ ** * 查询单个对象 * @param id * @return */ public User findUserById(Integer id) { String sql = "select * from tuser where id = ?"; List<User> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class), id); return DataAccessUtils.uniqueResult(query); }
queryForMap使用如下方法
public Map<String, Object> findUserMap(Integer id) { String sql = "select * from tuser where id = ?"; Object[] args = new Object[]{id}; List<Map<String, Object>> results = jdbcTemplate.query(sql, args, new RowMapperResultSetExtractor<Map<String, Object>>(new ColumnMapRowMapper(), 1)); return DataAccessUtils.uniqueResult(results); }
java学习交流群:513650703
相关推荐
JdbcTemplate的jar包 内含: commons-logging-1.2.jar spring-beans-5.0.0.RELEASE.jar spring-core-5.0.0.RELEASE.jar spring-jdbc-5.0.0.RELEASE.jar spring-tx-5.0.0.RELEASE.jar 查询一行的内容,封装为...
2. 在Spring的配置文件中配置数据源和JdbcTemplate对象,通常会用到数据库连接池,比如Apache的DBCP或C3P0。 3. 创建对应的Service类和DAO(Data Access Object)类。Service类用于封装业务逻辑,而DAO类负责与...
5. **查询结果处理**:`JdbcTemplate`提供了多种方法来处理查询结果,如`queryForList`、`queryForObject`等,可以方便地将结果映射到Java对象。 6. **回调接口**:通过`PreparedStatementCreator`和`...
1. **配置数据源**:在Spring的配置文件中定义数据源DataSource,可以使用Apache的DBCP或C3P0等连接池实现。 2. **创建JdbcTemplate实例**:将数据源注入到JdbcTemplate bean中,如: ```xml <bean id="...
List, Object>> result = jdbcTemplate.queryForList(sql); // 处理结果... } ``` 通过这种方式,`Spring JdbcTemplate`使得在Servlet中进行数据库操作变得更加简单和高效。它的主要优点包括: - **异常处理**...
Java中的JdbcTemplate是Spring框架提供的一种用于简化JDBC(Java Database Connectivity)操作的工具,它在数据持久层操作中扮演着重要角色。JdbcTemplate通过消除大量重复的JDBC样板代码,提高了代码的可读性和可...
DEBUG org.springframework.jdbc.core.JdbcTemplate - Setting SQL parameter value: 1, java.lang.Integer ``` 3. **自定义日志**:如果你需要更细粒度的控制,比如格式化输出或者添加额外的信息,可以自定义`...
Incorrect column count: expected 1, actual 5 ``` 二、解决方案 错误的原因是,查询返回的结果列期望为 1,但实际返回的是 5 列,因为 test 表中有 5 个字段,故返回 5 列。这个方法参数的解释是这样的: ```java...
jdbcTemplate-runtime-update 使用Spring Boot在运行时更改DataSources和JdbcTemplate 稍后,我将文件编辑为一个小型项目,并编写有用且详细的说明
4. 调用JdbcTemplate提供的方法,如`update()`执行DML语句,`query()`执行查询,`queryForList()`获取列表,`queryForObject()`获取单个对象等。 5. 使用占位符(问号)或命名参数进行SQL动态绑定,避免SQL注入。 ...
JdbcTemplate是Spring框架中的一个核心组件,主要用于简化Java数据库编程。它通过提供一系列模板方法,使得开发者能够以一种声明式的方式处理SQL语句,而无需直接操作Connection、Statement和ResultSet等底层API,...
### Spring中的JdbcTemplate #### JdbcTemplate概述 JdbcTemplate是Spring框架提供的一种用于简化JDBC编程的对象。通过封装原生的JDBC API,JdbcTemplate不仅提高了代码的可读性和可维护性,还帮助开发者避免了...
《Spring JDBC:深入理解JdbcTemplate》 在Java的Web开发中,Spring框架以其强大的功能和易用性赢得了广泛的认可。其中,Spring JDBC模块是Spring框架的重要组成部分,它为数据库操作提供了一种简单而有效的抽象,...
User user = jdbcTemplate.queryForObject(sql, new Object[]{userId}, User.class); ``` 3. **事务管理**:在Spring MVC中,事务管理通常是声明式的,通过在Service层的方法上添加@Transactional注解来开启事务...
List, Object>> result = jdbcTemplate.queryForList("SELECT * FROM users WHERE age > ?", new Object[]{25}); ``` 在这个例子中,`queryForList`方法执行SQL查询,并将结果返回为一个`Map`列表。 ##### 3.3 ...
JdbcTemplate提供了一系列的便捷方法,如`update()`, `queryForObject()`, `queryForList()`等,涵盖了常见的CRUD操作。这些方法都封装了SQL执行、结果转换等细节,使得代码更加简洁。 此外,JdbcTemplate还支持...
return jdbcTemplate.queryForObject(sql, new Object[]{username}, new UserRowMapper()); } ``` ### 5. JdbcTemplate 与 MyBatis 比较 - **灵活性**:MyBatis 提供了更灵活的 SQL 编写方式,支持 XML 或注解...
JdbcTemplate是Spring框架中的一个核心组件,主要用于简化Java数据库连接(JDBC)的操作。它提供了一种声明式的方式来执行SQL语句,使得开发者无需直接处理低级别的JDBC代码,从而减少了错误并提高了代码的可读性...
1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...