java - 如何正确执行以日期为条件的 JdbcQuery?

标签 java spring jakarta-ee spring-jdbc jdbctemplate

我正在使用 JdbcTemplate 开发 Spring 应用程序,但我有以下疑问:

我必须实现一个执行以下简单查询的方法:

select * from CoefficienteRendimento 
where DataRendimento = '2015-08-01 00:00:00'

DataRendimento 字段的值可以更改。

所以我正在做这样的事情:

public BigDecimal getRendimentoLordoCertificato(XXX) {

    String sql = "select * from CoefficienteRendimento where DataRendimento =  ?";

    .......................................................................
    .......................................................................
    .......................................................................


}

所以我的疑问是:

对于这种情况,最好将字符串值作为 XXX 参数(必须在查询内使用)传递 '2015-08-01 00:00:00' 或表示该日期的 Date 对象?

最佳答案

使用 PreparedStatement .

Date yourDate = ...
Connection conn = ...

String sql = "select * from CoefficienteRendimento where DataRendimento =  ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setDate(1, yourDate);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    ... // Handle your resultSet
}
<小时/>

更新了答案,知道结果应该是单个(最多)BigDecimal 并且使用了 Spring JDBC。

使用 jdbcTemplate,并且知道有 0 或 1 个结果,并且您希望获得有效结果或 null:

public BigDecimal getRendimentoLordoCertificato(Date currentDate) {

    String sql = "select Coefficiente_12 from CoefficienteRendimento where DataRendimento =  ?";

    List<BigDecimal> rendicontoLordoCert = getJdbcTemplate().query(
            sql, new Object[] { currentDate }, BigDecimal.class);

    if (rendicontoLordoCert.size > 0) {
        return rendicontoLordoCert.get(0);
    }
    return null;
}

关于java - 如何正确执行以日期为条件的 JdbcQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096752/

相关文章:

java - weblogic Server10.6中EJB定时器异常

java - 是否可以将容器管理的身份验证与密码加盐一起使用?

java - Spring Security 然后部署 -> 404 错误

java - google-play-services_lib 的 jar 不匹配

java - 如何使用 Streams 从目录中逐行读取所有文件?

java - Spring 数据 JPA。级联更新仅适用于特殊情况

java - 记录未添加到表中

java - 如何从 JPA EntityManager 获取返回的对象作为自定义 bean

java - 获取形状相交的中心(2D)

java - 尝试从通用类扩展 EJB : IllegalArgumentException The Argument {0} is not a valid local client view for the EJB {1}