jdbcTemplate执行sql获取对象的集合

0次阅读

共计 1244 个字符,预计需要花费 4 分钟才能阅读完成。

在项目中可能会遇到,项目架构是 hibernate,但某些查询还是习惯用 sql 语句来做,或者某些查询用 sql 语句更加简单灵活。这时候我们可以注入 jdbcTemplate。

1. 在非 springboot 项目中 jdbctemplate 的配置及注入
配置:在 spring-config.xml 中注册 bean,注意在注册 bean 时需要将 datasource 添加进入

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property> 
</bean>

注入:在使用 jdbctemplate 的地方

@Autowired
private JdbcTemplate jdbcTemplate;

2. 在 springboot 项目中
添加 jdbc 的坐标。配置文件中正常配置数据源相关内容,如下:
<dependency>

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>
注入:

@Autowired
private JdbcTemplate jdbcTemplate;

3. 查询
a. 获取一个对象集合, 通过 BeanPropertyRowMapper 将 sql 获取的结果映射到对应的对象中

    String sql="select app_id appId,count from table";
      List<TracePointTypeDTO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TracePointTypeDTO.class));
      
      若需要有参数传入
      String sql="select app_id appId,count from table where app_id=?";
      List<TracePointTypeDTO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TracePointTypeDTO.class),new Object[]{appId});
  
      
  b. 获取 String 对象的集合
    String timeSql="select update_time  from apps_exchange_rate group by update_time order by update_time desc;";
    List<String> strings =jdbcTemplate.query(timeSql, new RowMapper<String>() {public String mapRow(ResultSet rs, int rowNum)
                throws SQLException {return rs.getString(1);
        }
    });    
      

正文完
 0