如果数据库中存在数据,则返回的Java布尔函数
这是我目前拥有的功能。然而,它没有返回任何东西如果数据库中存在数据,则返回的Java布尔函数,java,jdbc,jdbctemplate,Java,Jdbc,Jdbctemplate,这是我目前拥有的功能。然而,它没有返回任何东西 public boolean authenticateDisabledRegions(int analystId, List<Integer> regionIds) { Integer query = jdbcTemplate.queryForObject( "select count(*) from ANALYST_REGION_MAPPING WHERE STATUS = 0 AND ANALYST_ID =
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;
}
public boolean authenticateDisabledRegions(int-analystId,List-regionId){
整数查询=jdbcTemplate.queryForObject(
“从状态为0、分析师ID为?和地区ID为?的分析师地区映射中选择计数(*)”,
Integer.class、analystId、regionId);
返回查询!=null&&query>0;
}
我试着这么做,但似乎不起作用,
我一直在查找它,有很多建议说,对于结果集rs和rs.next()
我只是想知道,对于这种类型的函数,最好的方法是什么
这样做的目的是检查它是否存在,如果存在,它将调用update(&change status),如果不存在,它将调用insert。尝试以下方法:
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;
}
public boolean doesregonexist(int userId,List regionid){
Integer result=jdbcTemplate.queryForObject(“从USER_REGION_表中选择计数(*),其中状态=1,USER_ID=?和REGION_ID=?”,Integer.class,analystId,REGION);
返回结果!=null&result>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;
}
public boolean doesregonexist(int userId,List regionid){
Integer query=jdbcTemplate.queryForObject(“从USER\u REGION\u表中选择count(*),其中STATUS=1,USER\u ID=?和REGION\u ID=?”,Integer.class,analystId,REGION);
返回查询!=null&&query>0;
}
参数是userId和regionId,但您需要将analystId和region传递给queryForObject()方法。如果您的输入是ID列表,则应该使用SQL的“IN”子句和Spring的
public boolean doesregonexist(int-analystId,List-regionid){
MapSqlParameterSource params=新的MapSqlParameterSource();
参数addValue(“analystId”,analystId);
参数addValue(“regionId”,regionId);
整型结果=jdbcTemplate.queryForObject(“从USER_REGION_表中选择COUNT(*),其中STATUS=1,USER_ID=:analystId和REGION_ID IN(:regionIds)”,参数,Integer.class);
返回结果!=null&&result>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;
}
@覆盖
公共布尔DoesRegionList(int userId,List regionId){
HashMap paramMap=新HashMap();
paramMap.put(“userId”,analystId);
paramMap.put(“regionIds”,regionIds);
SqlRowSet result=namedParameterJdbcTemplate.queryForRowSet(“从用户\区域\表中选择*,其中状态=0,用户\ ID=(:userId)和区域\ ID位于(:regionID)”,paramMap);
if(result.next())
返回true;
其他的
返回false;
}
您在查询中遇到的错误是什么?嗯,它会返回一些信息。它返回了什么?它与您想要的有什么不同?是否有错误?请提供正确的源代码。对于当前查询,方法参数与创建查询的参数不同。已更改源代码无需检查查询!=null,因为如果没有可计数的记录,零将返回。这不是一个解决方案,因为&
运算符只是一个二进制和。SQL查询本身就是问题所在;嵌套异常为org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;未分类的SQLException USER_REGION_表,其中STATUS=1,USER_ID=(:analystId)和REGION_ID位于(:regionId)];SQL状态[99999];错误代码[17004];列类型无效;嵌套异常为java.sql.SQLException:列类型无效可能在使用addValue
-和
@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;
}