๋์ ์ฟผ๋ฆฌ ๋ฌธ์
๋์ ์ฟผ๋ฆฌ๋, ์คํ ์์ ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ ์ฟผ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฒ์ ์กฐ๊ฑด์ด ์ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒ์ ์ฟผ๋ฆฌ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ ์ผ๋ก JOIN์ด ์ถ๊ฐ๋๋ ์ฟผ๋ฆฌ ๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค.
// ๊ฒ์ ์กฐ๊ฑด์ด ์์
select id, item_name, price, quantity from item
//์ํ๋ช
( itemName )์ผ๋ก ๊ฒ์
select id, item_name, price, quantity from item
where item_name like concat('%',?,'%')
//์ต๋ ๊ฐ๊ฒฉ( maxPrice )์ผ๋ก ๊ฒ์
select id, item_name, price, quantity from item
where price <= ?
//์ํ๋ช
( itemName ), ์ต๋ ๊ฐ๊ฒฉ( maxPrice ) ๋๋ค ๊ฒ์
select id, item_name, price, quantity from item
where item_name like concat('%',?,'%')
and price <= ?
๊ฒฐ๊ณผ์ ์ผ๋ก 4๊ฐ์ง ์ํฉ์ ๋ฐ๋ฅธ SQL์ ๋์ ์ผ๋ก ์์ฑํด์ผ ํ๋ค.
์ฌ์ฉ์๊ฐ ๊ฒ์ํ๋ ๊ฐ์ ๋ฐ๋ผ์ ์คํํ๋ SQL์ด ๋์ ์ผ๋ก ๋ฌ๋ ค์ ธ์ผ ํ๋ค๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๋ค.
JdbcTemplate ์ผ๋ก ๋์ ์ฟผ๋ฆฌ ์์ฑ
public List<Item> findAll(ItemSearchCond cond) {
String itemName = cond.getItemName();
Integer maxPrice = cond.getMaxPrice();
String sql = "select id, item_name, price, quantity from item";
// ๋์ ์ฟผ๋ฆฌ
if (StringUtils.hasText(itemName) || maxPrice != null) {
sql += " where";
}
boolean andFlag = false;
List<Object> param = new ArrayList<>();
if (StringUtils.hasText(itemName)) {
sql += " item_name like concat('%',?,'%')";
param.add(itemName);
andFlag = true;
}
if (maxPrice != null) {
if (andFlag) {
sql += " and";
}
sql += " price <= ?";
param.add(maxPrice);
}
log.info("sql={}", sql);
return template.query(sql, itemRowMapper(), param.toArray());
}
์ด๋ค ๊ฒฝ์ฐ์๋ where ๋ฅผ ์์ ๋ฃ๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ and ๋ฅผ ๋ฃ์ด์ผ ํ๋์ง ๋ฑ์ ๋ชจ๋ ๊ณ์ฐํด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ์ํฉ์ ๋ง์ถ์ด ํ๋ผ๋ฏธํฐ๋ ์์ฑํด์ผ ํ๋ค.
๋ฌผ๋ก ์ค๋ฌด์์๋ ์ด๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ค์ด ์ฌ์ฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
JdbcTemplate์์ ๋ฐ์ํ ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋ฅผ MyBatis๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ค์์ ๋ฐฐ์๋ณด๋๋ก ํ์ ~
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ํธ] - 4. JdbcTemplate - SimpleJdbcInsert (0) | 2023.04.08 |
---|---|
[์คํ๋ง DB 2ํธ] - 3. JdbcTemplate - ์ด๋ฆ ์ง์ ํ๋ผ๋ฏธํฐ (0) | 2023.04.08 |
[์คํ๋ง DB 2ํธ] - 1. JdbcTemplate (0) | 2023.04.06 |
[์คํ๋ง DB 2ํธ] - 0. DTO / DAO (0) | 2023.04.05 |
[์คํ๋ง DB 1ํธ] - 15. ์คํ๋ง ์์ธ ์ถ์ํ ์ดํด (0) | 2023.03.31 |