这是我目前的功能。但是,它没有返回任何东西。
public boolean authenticateDisabledRegions(int analystId, List<Integer> regionIds) {
Integer query = jdbcTemplate.queryForObject(
"select count(*) from ANALYST_REGION_MAPPING WHERE STATUS = 0 AND ANALYST_ID = ? AND REGION_ID = ?",
Integer.class, analystId, regionIds);
return query != null && query > 0;
}
我试图这样做,但似乎没有用, 我一直在查找它,并且有很多建议用rs.next()来表示ResultSet rs 我只是想知道这种功能的最佳方法是什么。
这样做的目的是检查它是否存在,如果存在,它将调用更新(和更改状态),如果没有,它将调用insert。
答案 0 :(得分:1)
如果你的输入是一个id列表,你应该使用SQL&#34; IN&#34;条款和Spring的NamedParameterJdbcTemplate。
Predict()
另见How to execute IN() SQL queries with Spring's JDBCTemplate effectivly?
答案 1 :(得分:0)
试试这个:
public boolean doesRegionExist(int userId, List<Integer> regionIds) {
Integer result = jdbcTemplate.queryForObject("select count(*) from USER_REGION_TABLE WHERE STATUS = 1 AND USER_ID = ? AND REGION_ID = ?", Integer.class, analystId, region);
return result != null & result > 0;
}
答案 2 :(得分:0)
您的代码有问题
public boolean doesRegionExist(int userId, List<Integer> regionIds) {
Integer query = jdbcTemplate.queryForObject("select count(*) from USER_REGION_TABLE WHERE STATUS = 1 AND USER_ID = ? AND REGION_ID = ?", Integer.class, analystId, region);
return query != null && query > 0;
}
参数是userId和regionIds,但是您将analystId和region传递给queryForObject()方法。
答案 3 :(得分:0)
这最终对我有用:
@Override
public boolean doesRegionExist(int userId, List<Integer> regionIds) {
HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("userId", analystId);
paramMap.put("regionIds", regionIds);
SqlRowSet result = namedParameterJdbcTemplate.queryForRowSet("SELECT * FROM USER_REGION_TABLE WHERE STATUS = 0 AND USER_ID = (:userId) AND REGION_ID IN (:regionIds)", paramMap);
if (result.next())
return true;
else
return false;
}