makoto_blog

パパさん_blog

プログラミング勉強メモや雑記など。

Spring JdbcTemplate memo

バインド変数「?」は、パラメータの数が多い時、順番を数えながらコーディングするのが大変なのである。

名前付きバインド変数

NamedParameterJdbcTemplate

// とあるリポジトリクラス
// 
    @Autowired
    private NamedParameterJdbcTemplate namedJdbc;
        
    public List<Map<String, Object>> findList(String s) {
        String sql = "select id, title, text, createdAt from page where title like :title or text like :text";
        Map<String, Object> p = new HashMap<String, Object>();
        p.put("title", s);
        p.put("text", s);
        List<Map<String, Object>> list = 
                namedJdbc.queryForList(sql, p);
// 2つならいいがupdate系は変数も多くなるから名前付きの方がわかりやすいだろう
//             jdbc.queryForList("select id, title, text, createdAt from page where title like ? or text like ?", s, s); 
        return list;
    }