2025-04-25
MyBatis Mapper๋ DB์ ์ง์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์,
SQL ๋ฌธ๋ฒ ์ค๋ฅ, ํ๋ผ๋ฏธํฐ ๋งคํ ์ค๋ฅ, ๊ฒฐ๊ณผ ๋งคํ ์ค๋ฅ๊ฐ ๋ฐํ์์ ๋ฐ์ํฉ๋๋ค.
๐ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํจ์ผ๋ก์จ
๊ฐ๋ฐ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ,
์์ ์ ์ธ DB ์ฐ๋์ ๋ณด์ฅํ ์ ์์ต๋๋ค!
MyBatis Mapper ํ ์คํธ๋ฅผ ์ํด์๋ ์คํ๋ง ํ๊ฒฝ์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
@SpringBootTest
public class MemoMapperTest {
@Autowired
private MemoMapper memoMapper;
// ํ
์คํธ ๋ฉ์๋ ์์ฑ
}
โก Tip:
ํ ์คํธ ํด๋์ค๋ ๋ณดํต
~Test
๋๋~Tests
๋ก ๋ค์ด๋ฐํฉ๋๋ค.
@BeforeEach
void setUp() {
// ํ
์คํธ์ฉ ๋ฐ์ดํฐ ์ธํ
(ํ์ ์)
}
๐ก ํ ์คํธ ์๋ํ๋ฅผ ์ํด ๋ฐ์ดํฐ ์ด๊ธฐํ ์ ๋ต์ ์ธ์ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค!
<if>
๋์ SQL ํ
์คํธ@Test
void testSelectIfXml() {
Map<String,Object> param = createSearchParam("text", "a");
List<Map<String,Object>> response = memoMapper.Select_if_xml(param);
// โ
๊ฒฐ๊ณผ๊ฐ ๋น์ด์์ง ์์์ง ๊ฒ์ฆ
Assertions.assertFalse(response.isEmpty(), "์กฐํ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.");
response.forEach(System.out::println);
}
private Map<String, Object> createSearchParam(String type, String keyword) {
Map<String, Object> param = new HashMap<>();
param.put("type", type);
param.put("keyword", keyword);
return param;
}
{id=3002, text=aaaaa, writer=example@example.com, createAt=2025-04-25T15:38}
โก๏ธ type="text"
์กฐ๊ฑด์ผ๋ก, text
์ปฌ๋ผ์ "a"๊ฐ ํฌํจ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ ์กฐํ๋์์ต๋๋ค.
<choose>
์กฐ๊ฑด ๋ถ๊ธฐ ํ
์คํธ@Test
void testSelectWhenXml_WithWriter() {
Map<String,Object> param = createSearchParam("writer", "example");
List<Map<String,Object>> response = memoMapper.Select_when_xml(param);
Assertions.assertTrue(response.size() >= 3, "์กฐํ๋ ๋ฐ์ดํฐ๊ฐ ์์๋ณด๋ค ์ ์ต๋๋ค.");
response.forEach(System.out::println);
}
{id=3001, text=asd, writer=example@example.com, createAt=2025-04-25T15:38}
{id=3002, text=aaaaa, writer=example@example.com, createAt=2025-04-25T15:38}
{id=3003, text=bbbb, writer=example@example.com, createAt=2025-04-25T15:38}
โก๏ธ writer
์ปฌ๋ผ์ "example"์ด ํฌํจ๋ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์กฐํ๋์์ต๋๋ค.
๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง
โก๏ธ ํ ์คํธ ์ /ํ ๋ฐ์ดํฐ ์ด๊ธฐํ ๊ณ ๋ ค
๊ฒ์ฆ ๋ก์ง ํ์
โก๏ธ ๋จ์ ์ถ๋ ฅ โ โ assert
ํ์ฉ โ
๋ช ํํ ๋ฉ์๋๋ช
โก๏ธ ํ ์คํธ ๋ชฉ์ ์ ๋๋ฌ๋ด๊ธฐ
๋ฐ๋ณต ์ฝ๋ ์ต์ํ
โก๏ธ Helper ๋ฉ์๋ ํ์ฉ
private Map<String, Object> createSearchParam(String type, String keyword) {
Map<String, Object> param = new HashMap<>();
param.put("type", type);
param.put("keyword", keyword);
return param;
}
void testSelectWhenXml_WithValidWriterKeyword() { ... }
๐ก Tip:
ํ ์คํธ ์ฝ๋๋ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ์ค์ํฉ๋๋ค.
"์ด๋ค ์ํฉ์์ ๋ฌด์์ ๊ฒ์ฆํ๋์ง" ๋ช ํํ ์์ฑํ์ธ์!
์ด๋ฒ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์,
๋์ SQL ํ ์คํธ์ ์ค์์ฑ๊ณผ ํจ๊ป
ํ ์คํธ ๋ฐ์ดํฐ ์ค๋น, ๊ฒ์ฆ ๋ก์ง์ ํ์์ฑ์ ์ ๋๋ก ์ฒด๊ฐํ์ต๋๋ค.
ํนํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค์ํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๋์ SQL ํน์ฑ์,
์ฌ๋ฌ ์ผ์ด์ค์ ๋ํ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์ค๋นํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
์์ผ๋ก ๋ ๊ฒฌ๊ณ ํ ์ฝ๋๋ฅผ ์ํด ํ ์คํธ ๋ฌธํ๋ฅผ ์ต๊ดํํด์ผ๊ฒ ์ต๋๋ค! ๐