gpt4 book ai didi

java - 我必须创建另一个 RowMapper 吗?

转载 作者:行者123 更新时间:2023-12-02 08:52:48 24 4
gpt4 key购买 nike

我正在开发此应用程序来从现有 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;
}

顺便说一句,你们都必须知道,如果我在映射器中声明取消注释 ordens.setOrdensInternas(rs.getLong("ordensInternas")); 行,我会收到错误,因为在我的 DAO 中,我没有使用该字段。

但是如果我需要创建另一个仅使用 ordensInternas 字段的方法怎么办?然后,我又收到一个错误...

所以,我的疑问是:如果我需要使用实体中的 OrdensAtrasadas 字段,我是否必须创建另一个类来实现另一个映射器?或者有没有一种方法可以在我当前的 OrdemMapper 类中执行任何条件

最佳答案

只需将您的作业放入单独的 try-catch 语句中即可。

public class OrdemMapper implements RowMapper<OrdemDeServicoCount> {

@Override
public OrdemDeServicoCount mapRow(ResultSet rs, int rowNum) throws SQLException {

OrdemDeServicoCount ordens = new OrdemDeServicoCount();

try {
ordens.setOrdensInternas(rs.getLong("ordensInternas"));
} catch (SQLException ex) {
// This will happen if the columnIndex is invalid among other things
}

try {
ordens.setOrdensAtrasadas(rs.getLong("ordensAtrasadas"));
} catch (SQLException ex) {
// This will happen if the columnIndex is invalid among other things
}

return ordens;
}
}

关于java - 我必须创建另一个 RowMapper 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60675913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com