2025-04-25
MyBatis๋ SQL ์ค์ฌ์ ํผ์์คํด์ค ํ๋ ์์ํฌ๋ก,
๋ณต์กํ JDBC ์ฝ๋๋ฅผ ๋์ฒดํด SQL๊ณผ ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋งคํํด์ฃผ๋ ์ญํ ์ ํ๋ค.
๊ทธ ์ค์ฌ์ ์๋ ๊ฒ์ด ๋ฐ๋ก Mapper!
Mapper๋ ์๋ฐ ๋ฉ์๋์ SQL์ ์ฐ๊ฒฐํด์ฃผ๋ ์ธํฐํ์ด์ค๋ก,
XML ๋๋ ์ด๋ ธํ ์ด์ ์ ํตํด SQL์ ์ ์ํ ์ ์๋ค.
๐ก ์ฆ, ์ง์ JDBC ์ฝ๋ ์์ด๋ ๊น๋ํ๊ฒ DB ์์ ๊ฐ๋ฅ!
โ ์ฅ์ | โ ๏ธ ๋จ์ |
---|---|
๋น ๋ฅด๊ณ ๊ฐ๋จํ ๊ฐ๋ฐ | ๋ณต์กํ ๋์ SQL ์ฒ๋ฆฌ ์ด๋ ค์ |
์ค์ ํ์ผ ์ต์ํ | SQL ๊ด๋ฆฌ ๋ฐ ์์ ์ ๋ถํธ |
์ฝ๋์ SQL์ด ํ๋์ ๋ณด์ | ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ๋น์ถ์ฒ |
์๊ท๋ชจ, ๋จ์ CRUD์ ์ ํฉ | ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์์ ํ๊ณ |
๐ก Tip:
๋จ์ CRUD โ ์ด๋ ธํ ์ด์
๋ณต์กํ ๋ก์ง โ XML ๋งคํผ ์ถ์ฒ!
@Mapper
public interface MemoMapper {
@Insert("INSERT INTO tbl_memo (id, text, writer, createAt) VALUES (#{id}, #{text}, #{writer}, #{createAt})")
int insert(MemoDto memoDto);
@Update("UPDATE tbl_memo SET text=#{text} WHERE id=#{id}")
int update(MemoDto dto);
@Delete("DELETE FROM tbl_memo WHERE id=#{id}")
int delete(int id);
@Select("SELECT * FROM tbl_memo WHERE id=#{id}")
MemoDto selectAt(int id);
@Select("SELECT * FROM tbl_memo")
List<MemoDto> selectAll();
}
โก ์ค๋ฌด ํ:
- ํญ์ ์ปฌ๋ผ๋ช ์ ๋ช ์ํ์!
SELECT *
๋ณด๋ค๋ ๋ช ํํ ์ปฌ๋ผ ์ง์ ์ด ์ ์ง๋ณด์์ ์ ๋ฆฌ.
@Results(id="MemoResultMap", value={
@Result(property="id", column="id"),
@Result(property="text", column="text")
})
@Select("SELECT * FROM tbl_memo")
List<Map<String, Object>> selectAllResultMap();
๊ตฌ๋ถ | DTO ๋งคํ | Map ์กฐํ |
---|---|---|
ํ์ | ํ์ ์์ | Object ๊ธฐ๋ฐ |
์ฌ์ฉ์ฒ | ์ ํ ๋ฐ์ดํฐ | ์ ๋์ ๋ฐ์ดํฐ |
์ฅ์ | ๋ช ํํ ๊ตฌ์กฐ | ์ ์ฐ์ฑ |
๋จ์ | ๋ณ๊ฒฝ ์ DTO ์์ ํ์ | ํ์ ์บ์คํ ํ์ |
โ๏ธ ์ถ๋ ฅ ์์
{id=1010, text=Hello}
{id=1011, text=World}
@Test
void testInsert() {
MemoDto dto = new MemoDto(1010, "Test Memo", "tester@naver.com", LocalDateTime.now(), null);
int result = memoMapper.insert(dto);
assertEquals(1, result);
}
โ DB ํ์ธ ๊ฒฐ๊ณผ
id | text | writer | createAt |
---|---|---|---|
1010 | Test Memo | tester@naver.com | 2025-04-25 12:30 |
;
์์ฑ ๊ธ์ง!@Param
๊ผญ ์ฌ์ฉ.