web-dev-qa-db-ja.com

ブール値を返す-jdbcTemplate

このメソッドでブール値を返したい:

public Boolean isSizeOk(String transactionId){ 
    String sqlQuery = "SELECT true FROM customer_pool WHERE id = "+ transactionID + " AND level = 13)";

//The next line is the problem. 
    //If I am returning a Boolean List, I can write

    List <Boolean> sizeResult = jdbcTemplate.queryForList(sqlQuery, Boolean.class, transactionId);

    //But since I only want a boolean value, what will the statement be?
     Boolean sizeResult = jdbcTemplate......?

    return sizeResult;
}

親切に助けてください。ありがとう。

13
bdfios

レコードがデータベースに存在することを確認するメソッドを作成する場合は、次のコードを使用できます。

Integer cnt = jdbcTemplate.queryForObject(
    "SELECT count(*) FROM customer_pool WHERE id = ? AND level = 13)", Integer.class, id);
return cnt != null && cnt > 0
23
kostya

結果の空でないことについての単純な情報を取得するためだけにSQLで行をカウントすることは不必要なやり過ぎかもしれません。結果セットに最初の行を要求して終了するだけです。主キーまたはその他のインデックスによる単純なクエリの場合、パフォーマンスは同様になる可能性がありますが、複雑なクエリ、または全表スキャンクエリの場合は遅くなる可能性があります。春に私は単純なユーティリティメソッドを好む

public boolean exists(String sql, Object... args) {
    boolean result = query(sql, args, new ResultSetExtractor<Boolean>() {
        @Override
        public Boolean extractData(ResultSet rs) throws SQLException,DataAccessException {
            boolean result = rs.next();
            return result;
        }
    });
    return result;
}

(詳細については、Googleの「sql exists vs count」を参照してください。)

8

どうですか

// Change query accordingly
String query = "SELECT 1 FROM " + tableName + " WHERE " + idColumnName + " = ? LIMIT 1";
try {
    jdbcTemplate.queryForObject(query, new Object[]{id}, Long.class);
    return true;
} catch (EmptyResultDataAccessException e) {
    return false;
}
4
Maxime Laval

ケース1:ブール値を返す場合:sizeResultリストのsizeを確認します。サイズがより大きい場合は--- return trueそれ以外はfalseを返します。

ケース2:ブールリストを返す場合、戻り値の型はブールリストでなければなりません。メソッドは次のように記述する必要があります。

public List<Boolean> isSizeOk(String transactionId, int sizeLimit){ 
String sqlQuery = "SELECT true FROM customer_pool WHERE id = ? AND level = 13)";


List <Boolean> sizeResult = jdbcTemplate.queryForList(sqlQuery, Boolean.class, transactionId);

 Boolean sizeResult = jdbcTemplate......?

return sizeResult;

}

0
Akash Goswami