我很好奇我应该如何使用springs jdbctemplate类确定我的一个表中是否已存在记录或行?我尝试过
int count = jdbcTemplate.queryForObject("select * from MyTable
where Param = ?", new Object[] {myParam},
Integer.class);
if(count ==0)
//record does not exist
问题是,尽管我不停地得到EmptyResultAccessDataException
之一,所以我将代码更新为
try{
jdbcTemplate.queryForObject("select * from MyTable
where Param = ?", new Object[] {myParam},
Integer.class);
} catch(EmptyResultAccessDataException e) {//insert the record}
如果记录确实存在,这将给我带来问题。因此,我想我的真正问题是,在表中搜索记录是否存在的最佳方法是什么,因为我想添加所述记录,如果不添加,则不执行任何操作。
答案 0 :(得分:7)
您可以使用以下内容:
String sql = "SELECT count(*) FROM MyTable WHERE Param = ?";
boolean exists = false;
int count = getJdbcTemplate().queryForObject(sql, new Object[] { "paramValue" }, Integer.class);
exists = count > 0;
天使
答案 1 :(得分:3)
在这种情况下,使用 JdbcTemplate 中的 query 方法更好,因为它们允许返回零行(没有EmptyResultDataAccessException):
boolean hasRecord =
jdbcTemplate
.query("select 1 from MyTable where Param = ?",
new Object[] { myParam },
(ResultSet rs) -> {
if (rs.next()) {
return true;
}
return false;
}
);
答案 2 :(得分:0)
如果数据库支持存在(例如Postgres),则最好使用它:
String query = "SELECT EXISTS(SELECT * FROM table_name WHERE ...)";
boolean exists = jdbcTemplate.queryForObject(query, params, Boolean.class);