[์Šคํ”„๋ง DB 2ํŽธ] - 3. JdbcTemplate - ์ด๋ฆ„ ์ง€์ • ํŒŒ๋ผ๋ฏธํ„ฐ

2023. 4. 8. 16:02ยทSpring/Spring DB

 

ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ”์ธ๋”ฉ

 

  String sql = "update item set item_name=?, price=?, quantity=? where id=?";
  template.update(sql,
    itemName,
    price,
    quantity,
    itemId);

 

JdbcTemplate์€ ๊ธฐ๋ณธ์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”์ธ๋”ฉ ํ•œ๋‹ค.

์ˆœ์„œ๋งŒ ์ž˜ ์ง€ํ‚ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์€ ์—†๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” ๋ณ€๊ฒฝ์‹œ์ ์— ๋ฐœ์ƒํ•œ๋‹ค.

์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š์•„์„œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

์ด๋ฆ„ ์ง€์ • ๋ฐ”์ธ๋”ฉ(NamedParameterJdbcTemplate)

 

private final NamedParameterJdbcTemplate template;

 

JdbcTemplate์€ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด

NamedParameterJdbcTemplate ๋ผ๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

save()

// ์ด์ „ ์ฝ”๋“œ
String sql = "insert into item(item_name, price, quantity) values(?,?,?)";


//NamedParameterJdbcTemplate ์‚ฌ์šฉ
String sql = "insert into item(item_name, price, quantity) " +
                "values(:itemName, :price, :quantity)";

 

SQL์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ? ๋Œ€์‹ ์— :ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋ฆ„ ์„ ๋ฐ›๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ์„ฑ/์ „๋‹ฌ

 

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด Map ์ฒ˜๋Ÿผ key , value ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ key ๋Š” :ํŒŒ๋ฆฌ์ดํ„ฐ์ด๋ฆ„ ์œผ๋กœ ์ง€์ •ํ•œ, ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด๊ณ  ,

value ๋Š” ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์ด ๋œ๋‹ค.

 

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋งŒ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ( param )๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

template.update(sql, param, keyHolder);

 

์ด๋ฆ„ ์ง€์ • ๋ฐ”์ธ๋”ฉ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 

 

1. Map

- SqlParameterSource

2. MapSqlParameterSource

3. BeanPropertySqlParameterSource

 

Map

๋‹จ์ˆœํžˆ Map ์„ ์‚ฌ์šฉํ•œ๋‹ค.

Map<String, Object> param = Map.of("id", id);

 

MapSqlParameterSource

SqlParameterSource param = new MapSqlParameterSource()
        .addValue("itemName", updateParam.getItemName())
        .addValue("price", updateParam.getPrice())
        .addValue("quantity", updateParam.getQuantity())
        .addValue("id", itemId);

 

BeanPropertySqlParameterSource

์ž๋ฐ”๋นˆ ํ”„๋กœํผํ‹ฐ ๊ทœ์•ฝ์„ ํ†ตํ•ด์„œ ์ž๋™์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์˜ˆ) ( getXxx() -> xxx, getItemName() -> itemName )

SqlParameterSource param = new BeanPropertySqlParameterSource(item);

 

 

BeanPropertyRowMapper

// ์ด์ „ ์ฝ”๋“œ
private RowMapper<Item> itemRowMapper() {
      return (rs, rowNum) -> {
          Item item = new Item();
          item.setId(rs.getLong("id"));
          item.setItemName(rs.getString("item_name"));
          item.setPrice(rs.getInt("price"));
          item.setQuantity(rs.getInt("quantity"));
          return item;
}; }


//BeanPropertyRowMapper
private RowMapper<Item> itemRowMapper() {
return BeanPropertyRowMapper.newInstance(Item.class); //camel ๋ณ€ํ™˜ ์ง€์›
}

 

BeanPropertyRowMapper ๋Š” ResultSet ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์„œ ์ž๋ฐ”๋นˆ ๊ทœ์•ฝ์— ๋งž์ถ”์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

snake_case ๋Š” camel ๋ณ€ํ™˜์„ ์ง€์›ํ•œ๋‹ค.

์ปฌ๋Ÿผ ์ด๋ฆ„๊ณผ ๊ฐ์ฒด ์ด๋ฆ„์ด ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์กฐํšŒ SQL์—์„œ ๋ณ„์นญ(as)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

select member_name as username

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard

 

์Šคํ”„๋ง DB 2ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ™œ์šฉ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ DB ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ ์˜ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธ

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ

'Spring > Spring DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์Šคํ”„๋ง DB 2ํŽธ] - 5. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  - ํ…Œ์ŠคํŠธ  (0) 2023.04.08
[์Šคํ”„๋ง DB 2ํŽธ] - 4. JdbcTemplate - SimpleJdbcInsert  (0) 2023.04.08
[์Šคํ”„๋ง DB 2ํŽธ] - 2. JdbcTemplate - ๋™์  ์ฟผ๋ฆฌ ๋ฌธ์ œ  (0) 2023.04.07
[์Šคํ”„๋ง DB 2ํŽธ] - 1. JdbcTemplate  (0) 2023.04.06
[์Šคํ”„๋ง DB 2ํŽธ] - 0. DTO / DAO  (0) 2023.04.05
'Spring/Spring DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์Šคํ”„๋ง DB 2ํŽธ] - 5. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ  - ํ…Œ์ŠคํŠธ
  • [์Šคํ”„๋ง DB 2ํŽธ] - 4. JdbcTemplate - SimpleJdbcInsert
  • [์Šคํ”„๋ง DB 2ํŽธ] - 2. JdbcTemplate - ๋™์  ์ฟผ๋ฆฌ ๋ฌธ์ œ
  • [์Šคํ”„๋ง DB 2ํŽธ] - 1. JdbcTemplate
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
[์Šคํ”„๋ง DB 2ํŽธ] - 3. JdbcTemplate - ์ด๋ฆ„ ์ง€์ • ํŒŒ๋ผ๋ฏธํ„ฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”