如果数据库中存在数据,则返回的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;

    }