在Spring框架中,JdbcTemplate可以用来执行SQL语句并处理结果集。如果你想通过JdbcTemplate查询数据库并返回一个对象列表(List),你需要做以下几步:

  1. 创建RowMapperRowMapper接口用于将结果集中的每一行映射到一个Java对象上。你需要实现RowMapper接口的mapRow方法来完成这一任务。
  2. 调用JdbcTemplate的query方法: 使用JdbcTemplatequery方法,传入SQL语句和你创建的RowMapper实例。

这里是一个示例代码,假设你有一个名为WmsExpensesSettleEntity的实体类,并且你想查询所有bill_orderno为空或未指定的记录,然后按照create_date降序排序:

1import org.springframework.jdbc.core.JdbcTemplate;
2import org.springframework.jdbc.core.RowMapper;
3
4import java.sql.ResultSet;
5import java.sql.SQLException;
6import java.util.List;
7
8// 假设这是你的实体类
9class WmsExpensesSettleEntity {
10    // 实体类字段
11}
12
13// RowMapper实现
14RowMapper<WmsExpensesSettleEntity> rowMapper = new RowMapper<WmsExpensesSettleEntity>() {
15    @Override
16    public WmsExpensesSettleEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
17        WmsExpensesSettleEntity entity = new WmsExpensesSettleEntity();
18        // 根据结果集填充实体类字段
19        entity.setField1(rs.getString("field1"));
20        entity.setField2(rs.getInt("field2"));
21        // 更多字段...
22        return entity;
23    }
24};
25
26// 使用JdbcTemplate查询
27List<WmsExpensesSettleEntity> list = jdbcTemplate.query(
28    "SELECT * FROM wms_expenses_settle WHERE (bill_orderno='' OR bill_orderno IS NULL) ORDER BY create_date DESC",
29    rowMapper);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.

确保你的WmsExpensesSettleEntity类中有对应的getter和setter方法,这样你才能在RowMapper中正确地设置字段的值。

如果你的实体类使用了Lombok的@Data注解,那么getter和setter会自动生成,这会让代码更简洁。如果没有使用Lombok,你需要手动编写这些方法。