JdbcTemplate์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํ ์ค SimpleJdbcInsert ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์
๋ฉ์๋๋ฅผ ๋ง๋ค์๋ค.
๋ณ๋์ SQL ์์ด ํ
์ด๋ธ ์ด๋ฆ๊ณผ ์ปฌ๋ผ-๊ฐ๋ง ๋๊ธฐ๋ฉด ์๋์ผ๋ก insert ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ์์ฃผ ์ค๋งํธํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฐ์ค๋ง ์์๋๋ฐ...๐ซ
SimpleJdbcInsert๋ฅผ ์ฌ์ฉํ ๋ฉ์๋๋ก password, task, author ๋ฅผ RequestBody ๋ก ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ด๋ค.
@Override
public Long saveSchedule(Schedule schedule) {
SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate);
simpleJdbcInsert.withTableName("schedule").usingGeneratedKeyColumns("id");
Map<String, Object> params = new HashMap<>();
params.put("password", schedule.getPassword());
params.put("task", schedule.getTask());
params.put("author", schedule.getAuthor());
return simpleJdbcInsert.executeAndReturnKey(new MapSqlParameterSource(params)).longValue();
}
SimpleJdbcInsert ๋ JdbcTemplate ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ insert ๊ฐ์ฒด์ด๋ค.
๋ณ๋์ sql ์์ด ํ
์ด๋ธ ์ด๋ฆ ๊ณผ ์ปฌ๋ผ ๊ฐ์ ์ฃผ๋ฉด ์๋์ผ๋ก insert ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ค๋ค.
usingGeneratedKeyColumns("id") ๋ auto_increment ๋ก ์์ฑ๋๋ ํค ๊ฐ์ ๋ฐํ๋ฐ๊ธฐ ์ํด ์ค์ ํด์ผ ํ๋ฉฐ ์ด๋ฅผ ํตํด id ๊ฐ์ ๋ฐํ๋ฐ๋ executeAndReturnKey() ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ดํ ํด๋น ๋ฉ์๋๋ฅผ ํตํด insert ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์ ์ฅ๋ ๋ ์ฝ๋์ id๋ฅผ ์ถ์ ํ ์ ์๋๋ก ์ค๊ณํ๋ค.
schedule ํ
์ด๋ธ์ createDate์ lastModifiedDate ์ปฌ๋ผ์ default current_timestamp ์ต์
์ ์ค์ ์ผ์ ์ด ๋ฑ๋ก๋๊ฑฐ๋ ์์ ๋ ๋ ์๋์ผ๋ก ํ์ฌ ์๊ฐ์ด ์
๋ ฅ๋๋๋ก ํ
์ด๋ธ์ ์ค๊ณํ๋ค.
๋ฐ๋ผ์ java ์ฝ๋์์ ๋ฐ๋ก ๋ ์ง๋ฅผ ์
๋ ฅํ๊ฑฐ๋ ์์ ํ์ง ์์๋ DB๊ฐ ์์์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ตฌ์กฐ์ด๋ค.
createDate timestamp default current_timestamp,
lastModifiedDate timestamp default current_timestamp on update current_timestamp
saveSchedule() ๋ฉ์๋๋ฅผ ํตํด DB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
์ดํ ํด๋น ๊ฐ์ ์กฐํํ๋๋ฐ ๋ ์ปฌ๋ผ์ null ๊ฐ์ด ๋ค์ด๊ฐ ๊ฒ์ด๋ค...!๐จ
โฒ createDate, lastModifiedDate ์ null ๊ฐ์ด ๋ค์ด๊ฐ๋ค.
SimpleJdbcInsert ๊ฐ ๋ฉ์ฒญํ๊ฒ๋ Schedule ๊ฐ์ฒด์ null ๋ก ๋ค์ด์๋ ํ๋๊น์ง๋ insert ์ฟผ๋ฆฌ์ ํฌํจ์ํจ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ถ๊ฐํ์ง ์์ createDate=null, lastModifiedDate=null ์ด๋ผ๋ ๊ฐ๊น์ง ๋ช
์์ ์ผ๋ก insert ๋์ด ๋ด๊ฐ ์ ์จ ์ง์ ํด๋ DB์ default ๊ฐ๋ค์ด null ๋ก ๋๋ฝํ์ก๋ค.
simpleJdbcInsert.withTableName("schedule").usingColumns("password","task","author") //์ปฌ๋ผ์ง์ ์ถ๊ฐ
.usingGeneratedKeyColumns("id");
ํด๊ฒฐ๋ฒ์ ์์ธ๋ก ๊ฐ๋จํ๋ฐ .usingColumns("password","task","author") ๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
๋ด๊ฐ ์ถ๊ฐํ ์ปฌ๋ผ์ ์ง์ ์ง์ ํด์ ์๋ ค์ฃผ๋ฉด ๋ฉ์ฒญํ SimpleJdbcInsert ๋ ํด๋น ์ปฌ๋ผ๋ง insert ๋ฌธ์ ํฌํจ์ํจ๋ค.
โฒ ์ ์์ ์ผ๋ก ์ ์ฅ๋ ๋ชจ์ต.
์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ ์จ๋ ๋๋ค๋ ์ ์ ๋ถ๋ช ๋งค๋ ฅ์ ์ด์ง๋ง ์กฐ๊ธ์ ์์ฌ์ด ๋ ์์ด๋ค.