Spring bootでBeanPropertyRowMapperの使い方

Spring bootでBeanPropertyRowMapperの使い方

select * from ~で検索結果を取得する場合は、BeanPropertyRowMapperを使ってエンティティに突っ込む方法があります。

以下はREST APIの例です。

@RestController
@RequiredArgsConstructor
@RequestMapping(path = "/api")
public class DemoController {
  private final JdbcTemplate jdbcTemplate;

  @RequestMapping(path = "/regist", method = RequestMethod.POST)
  public ResponseEntity<Object> regist() throws JsonParseException, JsonMappingException, IOException {
    RowMapper<XXEntity> mapper = new BeanPropertyRowMapper<>(XXEntity.class);
    List<XXEntity> list = jdbcTemplate.query("select * from sample_tbl", mapper);
    return new ResponseEntity<Object>(list, HttpStatus.OK);
  }
}

ある列の1カラムだけ取得したい場合とかはわざわざDtoクラスを作らずにすませたいです。

そういう場合は以下のように記述します。プレースホルダーがuserIdです。

String name = jdbcTemplate.queryForObject("select name from sample_tbl where user_id = ?", new Object[]{new String(userId)}, String.class);

第二引数でプレースホルダー、第三引数で戻り値のクラスを指定します。

これで1列の1カラムを取得することが可能です。

コメント

タイトルとURLをコピーしました