【发布时间】:2020-03-13 18:59:32
【问题描述】:
我正在开发此应用程序以从现有 Oracle 数据库的单个表中获取数据。
这里我们得到了实体:
public class OrdemDeServicoCount {
private Long ordensInternas;
private Long ordensAtrasadas;
// assume getters and setters
}
映射器:
public class OrdemMapper implements RowMapper<OrdemDeServicoCount> {
@Override
public OrdemDeServicoCount mapRow(ResultSet rs, int rowNum) throws SQLException {
OrdemDeServicoCount ordens = new OrdemDeServicoCount();
ordens.setOrdensInternas(rs.getLong("ordensInternas"));
// ordens.setOrdensAtrasadas(rs.getLong("ordensAtrasadas"));
return ordens;
}
}
最后,DAO:
public class OrdemDAO {
private JdbcTemplate jdbcTemplate;
public OrdemDAO(JdbcTemplate jdbcTemplate) {
super();
this.jdbcTemplate = jdbcTemplate;
}
public List<OrdemDeServicoCount> countOrdensInternasSemEncerrar() {
String sql = "SELECT COUNT(a.nr_sequencia) AS ordensInternas FROM MAN_ORDEM_SERVICO a "
+ "WHERE a.IE_STATUS_ORDEM IN (1,2) AND a.NR_GRUPO_PLANEJ IN (21)";
List<OrdemDeServicoCount> ordens = jdbcTemplate.query(sql, new OrdemMapper());
return ordens;
}
顺便说一句,你们都必须知道,如果我在 mapper 中声明取消注释 ordens.setOrdensInternas(rs.getLong("ordensInternas")); 行,我会得到一个错误,因为在我的 DAO 中,我没有使用该字段.
但是如果我需要创建另一个只使用 ordensInternas 字段的方法怎么办?再一次,我会得到一个错误......
所以,我的疑问是:如果我需要使用实体中的 ordensAtrasadas 字段,我是否必须创建另一个类来实现另一个映射器?或者有什么方法可以在我当前的 OrdemMapper 类中执行任何 条件?
【问题讨论】:
标签: java spring-boot rest spring-data-jpa