๋ชฉ์ฐจ
๋ค์ค ์
๋ฐ์ดํธ๋ฅผ ํ๋ ๋ฐฉ๋ฒ ์ค mybatis์์ ์ง์ํ๋ multi update๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํ๋ค.
application.properteis
#allowMultiQueries=true mybatis multi update ์ฌ์ฉํ๊ธฐ ์ํด์ ์ด๊ฑธ ๊ผญ ๋ฃ์ด์ผ ํ๋ค.
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3307/test?characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=test
spring.datasource.password=1234
mapper xml
<!-- ๋ค์ค ์
๋ฐ์ดํธ(์ ์ฒด update๋ฌธ์ foreach๋ก ๊ฐ์ผ ํ ๊ตฌ๋ถ์๋ฅผ ";"๋ก ํด์ผ SQL ์๋ฌ๊ฐ ๋์ง ์๋๋ค.) -->
<!-- list๋ฅผ ๋๊ฒจ ๋ฐ์๊ธฐ ๋๋ฌธ์ collection์ list๋ก ํ๊ณ ๋ณ์นญ(item) ์ ํ ํ item.์ผ๋ก list์์ ๊ฐ์ฒด ํ๋์ ์ ๊ทผํ ์ ์๋ค. -->
<update id="updateCommonCodeList" parameterType="list">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE tb_common_code
SET code_id = #{item.codeId}
,code_name = #{item.codeName}
,code_order = #{item.codeOrder}
,updater = #{item.updater}
,update_date = SYSDATE()
WHERE code_no = #{item.codeNo}
</foreach>
</update>
mapper interface
// CommonCodeVoํ์
์ list๋ฅผ ๋๊ธด๋ค.
void updateCommonCodeList(List<CommonCodeVo> commonCodeVoList);
service
@Transactional
public void updateCommonCodeList(List<CommonCodeVo> commonCodeVoList) throws Exception{
commonCodeMapper.updateCommonCodeList(commonCodeVoList);
}
test code
package com.test.admin.service;
import com.test.admin.vo.CommonCodeVo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Commit;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
@Slf4j
@Transactional // ์ด ์ ๋
ธํ
์ด์
์์ผ๋ฉด ์ฟผ๋ฆฌ ์คํ ํ ๋กค๋ฐฑ
class CommonCodeServiceTest {
@Autowired CommonCodeService commonCodeService;
@Test
@DisplayName("๋ค์ค์
๋ฐ์ดํธ")
@Commit // ํด๋์ค ๋ ๋ฒจ์ @Transactional์ด ์์ด์ ์ค์ DB์ ๋ฐ์ํ๊ธฐ ์ํด ๊ฐ์ Commit ์ค์ ์ ์ค
public void ๋ค์ค์
๋ฐ์ดํธ() throws Exception {
//givin
CommonCodeVo commonCodeVo1 = new CommonCodeVo();
commonCodeVo1.setCodeId("A05");
commonCodeVo1.setCodeName("ํ์ฐ์ค");
commonCodeVo1.setCodeDesc("์ง์ ๋ปํฉ๋๋ค.");
commonCodeVo1.setUpdater("์์ด์ธ๋งจ");
commonCodeVo1.setCodeNo(11);
CommonCodeVo commonCodeVo2 = new CommonCodeVo();
commonCodeVo2.setCodeId("A06");
commonCodeVo2.setCodeName("ํจ๋ง");
commonCodeVo2.setCodeDesc("๋๋ฌผ ํจ๋ง๋ฅผ ๋ปํฉ๋๋ค.");
commonCodeVo2.setUpdater("์ธ๋ ๊ฒํฐ");
commonCodeVo2.setCodeNo(12);
CommonCodeVo commonCodeVo3 = new CommonCodeVo();
commonCodeVo3.setCodeId("A07");
commonCodeVo3.setCodeName("์ฌ์");
commonCodeVo3.setCodeDesc("๋๋ฌผ ์ฌ์๋ฅผ ๋ปํฉ๋๋ค.");
commonCodeVo3.setUpdater("์ฌํ๋ฆฌ");
commonCodeVo3.setCodeNo(13);
//when
// 3๊ฐ์ ๊ฐ์ฒด๋ฅผ list์ ๋ด์์ ์๋น์ค์ updateCommonCodeList()๋ฅผ ํธ์ถํ๋ค.
List<CommonCodeVo> commonCodeVoList = new ArrayList<>();
commonCodeVoList.add(commonCodeVo1);
commonCodeVoList.add(commonCodeVo2);
commonCodeVoList.add(commonCodeVo3);
commonCodeService.updateCommonCodeList(commonCodeVoList);
//then
// ์๋ต
}
}
๊ฒฐ๊ณผ
SQL
DB table
์ค์ DB ํ
์ด๋ธ์ CODE_DESC๊ฐ NULL๋ก ๋ ์ด์ ๋.. mapper.xml์ ์์ ๋ฌธ์ด ๋๋ฝ๋์ด์ ๊ทธ๋ ๋ค.
๋ค์ ์ฌ์ง์ ๋ณ๊ฒฝํด ๊ธ์ ์์ ํ๊ธด ๊ท์ฐฎ๋ค..

๋๊ธ