gpt4 book ai didi

java - 使用 Spring JdbcTemplate 选择数据的最佳实践

转载 作者:IT老高 更新时间:2023-10-28 13:48:09 25 4
gpt4 key购买 nike

我想知道从表中选择记录的最佳做法是什么。我在下面提到了两种方法,我想知道哪一种是使用 Spring JdbcTemplate 从表中选择数据的最佳实践.

第一个例子

try {
String sql = "SELECT id FROM tableName WHERE column_name = '" + coulmn value + "'";

long id = jdbcTemplate.queryForObject(sql, Long.class);
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.debug(e);
}
}

这会引发以下异常:

Expected 1 actual 0 like

当表不包含任何数据时。我的 friend 告诉我,这不是选择数据的最佳做法。他建议下面提到的代码是选择数据的唯一最佳实践。

第二个例子

try {
String countQuery = "SELECT COUNT(id) FROM tableName";

int count = jdbcTemplate.queryForInt(countQuery);
if (count > 0) {
String sql = "SELECT id FROM tableName WHERE column_name = '" + coulmn value + "'";

long id = jdbcTemplate.queryForObject(sql, Long.class);
}
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.debug(e);
}
}


我很想知道正确的一种或任何其他最佳做法。

最佳答案

绝对第一种方式是最佳实践,因为在第二种方式中,您会两次访问数据库,而实际上您应该只访问一次。这可能会导致性能问题。

你需要做的是捕获异常EmptyResultDataAccessException,然后返回null。 Spring JDBC 模板返回 EmptyResultDataAccessException如果在数据库中没有找到数据则异常。

您的代码应如下所示。

try {
sql = "SELECT id FROM tableNmae WHERE column_name ='"+ coulmn value+ "'";
id= jdbcTemplate.queryForObject(sql, Long.class);
}
catch (EmptyResultDataAccessException e) {
if(log.isDebugEnabled()){
log.debug(e);
}
return null
}

关于java - 使用 Spring JdbcTemplate 选择数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503607/

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