JdbcTemplate 使用总结

主要介绍几种查询的特殊情况

  1. jdbcTemplate.queryForList
    如果没有查找到记录 ,会返回一个 size=0 的空集合 ,
    这主要是因为 在处理查询结果时

    List results = this.rowsExpected > 0 ? new ArrayList(this.rowsExpected) : new ArrayList();

2.jdbcTemplate.queryForMap
必须返回一条记录 ,未查找到记录 或者 查找到多条记录 ,都会报错

  int size = results != null ? results.size() : 0;
        if (size == 0) {
            throw new EmptyResultDataAccessException(1);
        } else if (results.size() > 1) {
            throw new IncorrectResultSizeDataAccessException(1, size);
        } else {
            return results.iterator().next();
        }
  1. jdbcTemplate.queryForObject
    必须返回一条记录 ,未查找到记录 或者 查找到多条记录 ,都会报错
  int size = results != null ? results.size() : 0;
        if (size == 0) {
            throw new EmptyResultDataAccessException(1);
        } else if (results.size() > 1) {
            throw new IncorrectResultSizeDataAccessException(1, size);
        } else {
            return results.iterator().next();
        }

queryForMap 和 queryForObject 看上去是不是相同的情况?
没错,就是相同的。不论是 queryForMap 还是 queryForObject
都是先使用 queryForList 查询记录,然后再取 List 里的第一条记录进行处理。
并且 queryForMap 是直接复用 queryForObject , 其实从类的继承关系上来看
Map 是 Object的子类,复用的话也是合理的。

 public Map<String, Object> queryForMap(String sql) throws DataAccessException {
        return (Map)this.queryForObject(sql, this.getColumnMapRowMapper());
    }

    public <T> T queryForObject(String sql, RowMapper<T> rowMapper) throws DataAccessException {
        List<T> results = this.query(sql, rowMapper);
        return DataAccessUtils.requiredSingleResult(results);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JdbcTemplate是Spring框架中的一个核心类,用于简化JDBC操作。它提供了方便的方法来执行SQL查询、更新和批处理操作。 在使用JdbcTemplate之前,需要先获取JdbcTemplate对象。根据提供的引用内容,有三种常见的方式可以获取JdbcTemplate对象。 第一种方式是通过在Spring配置文件中定义一个JdbcTemplate的bean,并将其注入到需要使用的类中。在提供的代码示例中,可以看到在Spring配置文件中定义了一个名为"jdbcTemplate"的bean,并将其注入到了UserServiceImpl类中的setJdbcTemplate方法中。这样,UserServiceImpl类就可以通过调用getJdbcTemplate方法来获取JdbcTemplate对象。 第二种方式是直接在需要使用JdbcTemplate的类中定义一个JdbcTemplate的成员变量,并提供相应的setter方法。在提供的代码示例中,可以看到在UserServiceImpl类中定义了一个名为"jdbcTemplate"的成员变量,并提供了setJdbcTemplate方法来注入JdbcTemplate对象。这样,UserServiceImpl类就可以通过调用getJdbcTemplate方法来获取JdbcTemplate对象。 第三种方式是通过编程方式创建JdbcTemplate对象,然后进行相应的配置。这种方式相对较少使用,一般在没有Spring配置文件的情况下使用。通过创建JdbcTemplate对象并手动设置它的数据源,可以实现与数据库的连接。具体代码示例如下: ```java DataSource dataSource = ...; // 创建数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // 创建JdbcTemplate对象 ``` 需要注意的是,无论通过哪种方式获取JdbcTemplate对象,都需要先配置好数据源,以便JdbcTemplate能够正确地与数据库进行连接。 总结起来,要使用JdbcTemplate,可以通过在Spring配置文件中定义一个JdbcTemplate的bean并注入到需要使用的类中,或者在需要使用JdbcTemplate的类中直接定义一个JdbcTemplate的成员变量并提供相应的setter方法。另外,还可以通过编程方式创建JdbcTemplate对象并手动设置数据源。无论哪种方式,都需要确保已正确配置数据源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值