Java布尔函数,如果数据库

时间:2017-02-10 20:23:05

标签: 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 = ? AND REGION_ID = ?", 
        Integer.class, analystId, regionIds);

    return query != null && query > 0;
}

我试图这样做,但似乎没有用, 我一直在查找它,并且有很多建议用rs.next()来表示ResultSet rs 我只是想知道这种功能的最佳方法是什么。

这样做的目的是检查它是否存在,如果存在,它将调用更新(和更改状态),如果没有,它将调用insert。

4 个答案:

答案 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;

    }