- ๊ด๋ จ ๊ธ
- [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ
- MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ
- MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ
- MyBatis์ Log4J ์ฐ๋ํ๊ธฐ
์ ๋ชฉ
MyBatis์ ๋์ SQL ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ๋์ SQL๋ฌธ์ผ๋ก ์ฌ๋ฌ ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ORDER BY ์ ์ ๋ฐ๊ฟ์ผ ํ๊ฑฐ๋ ๊ฒ์ ์กฐ๊ฑด์ ๋ฐ๋ผ WHERE ์ ์ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ ๋์ SQL ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ SQL๋ฌธ์ ๋ง๋ค ์ ์๋ค.
ํ - MyBatis ๋์ SQL ์ข ๋ฅ
๋์ SQL ์๋ฆฌ๋จผํธ | ์ค๋ช |
<if test="์กฐ๊ฑด">SQL</if> | ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ SQL๋ฌธ์ ๋ฐํํ๋ค. |
<choose> <when test="์กฐ๊ฑด1">SQL</when> <when test="์กฐ๊ฑด2">SQL</when> <otherwise>SQL</otherwise> <choose> |
๊ฒ์ฌํ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ฉ ์๋ฐ์ if-else๋ฌธ๊ณผ ์ ์ฌํ๋ค. ์ผ์นํ๋ ์กฐ๊ฑด์ด ์์ผ๋ฉด <otherwise>์ SQL์ด ๋ฐํ๋๋ค. |
<where> <if test="์กฐ๊ฑด1">SQL</if> <if test="์กฐ๊ฑด2">SQL</if> </where> |
SQL๋ฌธ์ WHERE์ ์ ๋ง๋ค๋ ์ฌ์ฉํ๋ค. <where> ์์ ์กฐ๊ฑด์์์ ์ผ์นํ๋ ์กฐ๊ฑด์ด ์์ผ๋ฉด WHERE์ ์ ๋ง๋ค์ด ๋ฐํํ๊ณ ์์ผ๋ฉด ๋ง๋ค์ง ์๋๋ค. |
<trim prefix="์ ๋์ด" prefixOverrides="๋ฌธ์์ด|๋ฌธ์์ด"> <if test="์กฐ๊ฑด1">SQL</if> <if test="์กฐ๊ฑด2">SQL</if> </trim> |
์กฐ๊ฑด์ ๋ฐ๋ผ SQL์ด ๋ฐํ๋๋ฉด SQL๋ฌธ์ ์๋ถ๋ถ์์ prefixOverrides์ ์ง์ ๋ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ ๋ฌธ์์ด์ ์ ๊ฑฐํ๊ณ prefix๋ก ์ง์ ํ ์ ๋์ด๋ฅผ ๋ถ์ธ๋ค. |
<set> <if test="์กฐ๊ฑด1">SQL</if> <if test="์กฐ๊ฑด2">SQL</if> </set> |
UPDATE๋ฌธ์ SET์ ์ ๋ง๋ค๋ ์ฌ์ฉํ๋ค. <set> ์์ ์กฐ๊ฑด์์์ ์ผ์นํ๋ ์กฐ๊ฑด์ด ์์ผ๋ฉด SET์ ์ ๋ง๋ค์ด ๋ฐํํ๊ณ ์์ผ๋ฉด ๋ง๋ค์ง ์๋๋ค. SET์ ์ ํญ๋ชฉ์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฝค๋ง(,)๋ฅผ ๋ถ์ธ๋ค. |
<foreach item="ํญ๋ชฉ" index="์ธ๋ฑ์ค" collection="๋ชฉ๋ก" open="์์๋ฌธ์์ด" close="์ข ๋ฃ๋ฌธ์์ด" separator="๊ตฌ๋ถ์"> </foreach> |
๋ชฉ๋กํ ๋ฐ์ดํฐ๋ก SQL๋ฌธ์ ๋ง๋ค๋ ์ฌ์ฉํ๋ค. ํนํ IN(๊ฐ, ๊ฐ, ...) ์กฐ๊ฑด์ ๋ง๋ค๋ ํธ๋ฆฌํ๋ค. item : ํ ๊ฐ์ ํญ๋ชฉ์ ๊ฐ๋ฆฌํค๋ ๋ณ์ ์ด๋ฆ ์ง์ index : ์ธ๋ฑ์ค ๊ฐ์ ๊บผ๋ผ๋ ์ฌ์ฉํ ๋ณ์ ์ด๋ฆ ์ง์ collection : java.util.List ๊ตฌํ์ฒด๋ ๋ฐฐ์ด ๊ฐ์ฒด ์ง์ open : ์ต์ข ๋ฐํ๊ฐ์ ์ ๋์ด ์ง์ close : ์ต์ข ๋ฐํ๊ฐ์ ์ ๋ฏธ์ด ์ง์ separator : ๊ตฌ๋ถ์ ๋ฌธ์์ด ์ง์ |
<bind name="๋ณ์๋ช " value="๊ฐ"/> | ๋ณ์๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ |
๐ <when>๊ณผ <if>์ test ์์ฑ
test ์์ฑ์๋ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ OGNL(Open-Graph Navigation Language) ๊ธฐ๋ฐ ํํ์์ด ์จ๋ค.
OGNL์ ์๋ฐ ๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ์ ์ฝ๊ฒ ๊บผ๋ด๊ณ ํ ๋นํ๊ธฐ ์ฝ๋๋ก ๋ง๋ ํํ์ ์ธ์ด์ด๋ค.
MyBatis ๋์ SQL - <choose> ์ฌ์ฉ ์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<select id="selectList" parameterType="map" resultMap="projectResultMap">
select PNO, PNAME, STA_DATE, END_DATE, STATE
from PROJECTS
order by
<choose>
<when test="orderCond == 'TITLE_ASC'">PNAME asc</when>
<when test="orderCond == 'TITLE_DESC'">PNAME desc</when>
<when test="orderCond == 'STARTDATE_ASC'">STA_DATE asc</when>
<when test="orderCond == 'STARTDATE_DESC'">STA_DATE desc</when>
<when test="orderCond == 'ENDDATE_ASC'">END_DATE asc</when>
<when test="orderCond == 'ENDDATE_DESC'">END_DATE desc</when>
<when test="orderCond == 'STATE_ASC'">STATE asc</when>
<when test="orderCond == 'STATE_DESC'">STATE desc</when>
<when test="orderCond == 'PNO_ASC'">PNO asc</when>
<otherwise>PNO desc</otherwise>
</choose>
</select>
|
cs |
<choose>๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ orderCond์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ๋ ฌ์กฐ๊ฑด์ ๋ฐํํ๋๋ก ํ๋ ์์ด๋ค.
์๋ฅผ ๋ค์ด orderCond๊ฐ 'STATE_ASC'์ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ SQL๋ฌธ์ด ์์ฑ๋๋ค.
select PNO, PNAME, STA_DATE, END_DATE, STATE
from PROJECTS
order by STATE asc
MyBatis ๋์ SQL - <set> ์ฌ์ฉ ์
1
2
3
4
5
6
7
8
9
10
11
12
|
<update id="update" parameterType="map">
update PROJECTS
<set>
<if test="title != null">PNAME=#{title},</if>
<if test="content != null">CONTENT=#{content},</if>
<if test="startDate != null">STA_DATE=#{startDate},</if>
<if test="endDate != null">END_DATE=#{endDate},</if>
<if test="state != null">STATE=#{state},</if>
<if test="tags != null">TAGS=#{tags},</if>
</set>
where PNO = #{no}
</update>
|
cs |
<set>์ ์ฌ์ฉํ์ฌ update ํธ์ถ ์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ์ปฌ๋ผ๋ง SET์ ์ ๋ง๋ค๋๋ก ํ๋ ์์ด๋ค.
์๋ฅผ ๋ค์ด startDate, endDate๋ง ์ ๋ฌ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์ SQL๋ฌธ์ด ์์ฑ๋๋ค.
update PROJECTS
SET STA_DATE = #{startDate},
END_DATE = #{endDate}
where PNO = #{no}
- ๊ด๋ จ ๊ธ
- [JAVA/WEB] ์น ํ๋ก์ ํธ์ MyBatis ์ธํ ๋ฐ ์ ์ฉํ๊ธฐ
- MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ
- MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ
- MyBatis์ Log4J ์ฐ๋ํ๊ธฐ
References
์ดํ๊ฐ์ ์๋ฐ ์น ๊ฐ๋ฐ ์ํฌ๋ถ(ํ๋ฆฌ๋ , 2016, ์์ง์)
'Javaยท๏ปฟServletยท๏ปฟJSP > LibraryยทFramework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AspectJ Weaver] execution ์ง์์ ์ค์ ๋ฐฉ๋ฒ ์ ๋ฆฌ (0) | 2020.04.27 |
---|---|
[JPA/Hibernate] persistence.xml ์ค์ ๋ฐฉ๋ฒ (6) | 2020.03.19 |
MyBatis์ Log4J ์ฐ๋ํ๊ธฐ (0) | 2020.02.25 |
MyBatis ์ค์ ํ์ผ ์์ฑ ๋ฐฉ๋ฒ (0) | 2020.02.24 |
MyBatis ์ค์ ํ์ผ - SQL Mapper ์์ฑ ๋ฐฉ๋ฒ (6) | 2020.02.23 |
๋๊ธ