-
JAVA ์๋ฐ ๋ง์ด๋ฐํฐ์ค mybatis ๋์ SQLJAVA 2020. 8. 23. 15:43
๐ฏ ์๋ฐ ๋ง์ด๋ฐํฐ์ค ๋์ SQL๋ฌธ์ ์์๋ณธ๋ค.
๋ง์ด๋ฐํฐ์ค ํํ์ด์ง์์ ๋์ sql ์ค๋ช ์ ํ์ธํ ์ ์๋ค.
์ง๋๋ฒ ๋ง์ด๋ฐํฐ์ค ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํด ์ฐ์ตํด๋ณธ๋ค. ์๋์ ์ฝ๋๋ธ๋ญ ์์๋ Mapper.xml -> Main -> Service -> DAO ํด๋์ค๋ก ์ด์ด์ง๋ฉฐ, ์ญ์์ผ๋ก ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ ๋ค Main์์ ์คํ์ ์ข ๋ฃํ๋ค.
selectDynamicDeptno
<select id ="selectDynamicDeptno" parameterType = "HashMap" resultType="Dept"> select deptno, dname, loc from dept <if test="deptno != null"> where deptno= #{deptno} </if> </select>
์ฟผ๋ฆฌ๋ฌธ์ ifํ๊ทธ๋ฅผ ์ฌ์ฉํด ์กฐ๊ฑด์ ๋ถ์ผ ์ ์๋ค. ์กฐ๊ฑด์ด true์ผ ๊ฒฝ์ฐ์ where์ ์ ๋ฐ๋ผ ์ฟผ๋ฆฌ๋ฌธ์ด ์คํ๋๋ค.
selectDynamicDeptno๋ผ๋ id๋ฅผ ๊ฐ์ง ์ด select์ฟผ๋ฆฌ๋ deptno๋ฅผ ํด์ฌ๋งต์ผ๋ก ๋ฐ์์ค๊ณ , ๊ฒฐ๊ณผ๋ฅผ Dept ํด๋์ค์ ์ ์ฅํ ๊ฒ์ด๋ค. ๋ฐ์์จ deptno๊ฐ null์ธ ๊ฒฝ์ฐ์ ์ ์กฐ๊ฑด๋ฌธ์ด ์คํ๋์ง ์์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๋ค.
Main int deptno = 10; HashMap<String, Integer> map = new HashMap<String, Integer>(); // map.put("deptno", null); map.put("deptno", deptno); List<Dept> list = service.selectDynamicDeptno(map); for(Dept dept : list) { System.out.println(dept); }
๋ฉ์ธ์์ ๋ถ์๋ฒํธ๋ 10์ผ๋ก ์ง์ ํด์ฃผ๊ณ ํด์ฌ๋งต ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์์ฑ๋ ๋งต์ ํค๊ฐ๊ณผ ๋ฐธ๋ฅ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค ์๋น์ค์ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ง๋ค์ด์ง ๋งต์ ์ ๋ฌํ๋ค.
Service public List<Dept> selectDynamicDeptno(HashMap<String, Integer> map){ SqlSession session = MySqlSessionFactory.getSqlSession(); List<Dept> list = null; try { list = dao.selectDynamicDeptno(session, map); } finally { session.close(); }return list; }
์๋น์ค์ ์ ๋ ํจ์๋ ํธ์ถ๋ ๋ฉ์ธ์์ ๋งต์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์๋ค. ์ด ํจ์์ ๋ฆฌํดํ์ ์ ๋ฆฌ์คํธ์ด๋ค.
์ธ์ ์ ์ฐ๊ฒฐํ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค ๋ฆฌ์คํธ์ dao์ ์ ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด์ ์ธ์ ๊ณผ ๋ฐ์์จ ๋งต์ ์ ๋ฌํด์ฃผ๊ณ session.close()๋ก ์ธ์ ์ ๋ฐ๋ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์คํธ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋ฆฌํดํ๋ค.
์ด ์๋น์ค ํด๋์ค๋ ์ธ์ ๋ง ์ฐ๊ฒฐํ๊ณ ๋ซ๋ ์ญํ ์ ํ๋ค๋ ๊ฑธ ์ ์ ์๋ค.
DAO public List<Dept> selectDynamicDeptno(SqlSession session, HashMap<String, Integer> map) { List<Dept> list = session.selectList("com.dept.DeptMapper3.selectDynamicDeptno", map); return list; }
dao์์ ์ธ์ ๊ณผ ๋งต(๋ฉ์ธ์์ ๋์ด์จ ํค-๋ฐธ๋ฅ๊ฐ)์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์๋ค. ๋ฆฌํดํ์ ์ ๋ง์ถฐ์ ๋ฆฌํดํ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
SqlSession ์ selectList ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์ฟผ๋ฆฌ ์คํ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐ์์ฌ ์ ์๋ค. ์ธ์์ ์ฒซ๋ฒ์งธ ์๋ฆฌ์ Mapper.xml์ ์ฟผ๋ฆฌ์์ ์ง์ ํ id๋ฅผ ์ ๋ ฅํ๊ณ ๋๋ฒ์ฌ ์๋ฆฌ์ ๋ฐ์์จ ํด์ฌ๋งต์ ์ ๋๋ค. ์ด ๋๊ฐ๋ฅผ ์กฐํฉํด์ ๋ฆฌ์คํธ๋ก ๋ฃ์์ผ๋ ํธ์ถํ ๊ณณ์ ๋ฆฌ์คํธ๋ฅผ ๋ฆฌํด๋ง ํ๋ฉด ๋๋ค. dao๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ฆฌ์คํธ ๋ค๊ณ ์๋น์ค๋ก ๊ฐ๊ณ , ์๋น์ค๋ ๋ฆฌ์คํธ ๋ค๊ณ ๋ฉ์ธ์ผ๋ก ๊ฐ๋ค. ๋ฉ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์ ๊ฒฐ๊ณผ๋ฅผ ์คํํ๋ค.
์ด์ ์ ์๋น์ค ํด๋์ค์์ ์ปค๋ฅ์ ์ ๋ฐ์์ค๊ณ dao์์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ํ ๋ฉ์ธ์ผ๋ก ๋ฆฌํดํ๋ ์ญํ ์ ํ๋๋ฐ, ์ด์ ๋งคํผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ์ผ๋ dao๋ ์ธ์ ๊ณผ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์์์ ๋ฉ์ธ์ผ๋ก ๋ฆฌํด๋ง ํ๋ ์ญํ ์ ํ๊ฒ ๋๋ค. ์ญํ ์ด ์ค์ด๋ค์ด์ ์ฝ๋๊ฐ ์งง์์ก๋ค.
selectDynamicChoose
<select id="selectDynamicChoose" parameterType = "HashMap" resultType="Dept"> select deptno, dname, loc from dept <choose> <when test="dname != null"> where dname = #{dname} </when> <when test="loc != null"> where loc = #{loc} </when> <when test="dname != null and loc != null"> where loc = #{loc} and dname #{dname} </when> <otherwise> where deptno = 10 </otherwise> </choose> </select>
์๋ฐ์ if-else ๋ฌธ๋ฒ์ฒ๋ผ ์กฐ๊ฑด์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ ๋ ๋ง์ด๋ฐํฐ์ค์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. when์ ์ if๋ก, otherwiser๋ฅผ else๋ก ์๊ฐํ๋ฉด ๋๋ค.
์ด ์ฟผ๋ฆฌ๋ฌธ์ ํ๋ผ๋ฏธํฐ ํ์ ์ ํด์ฌ๋งต์ผ๋ก ๋ฐ๊ณ ๊ฒฐ๊ณผ๋ Dept์ ์ ์ฅํ๋ค. ์์์ ํ๋๊ฑฐ์ ๋ฌ๋ฆฌ ์ด๋ฒ์ ๊ฒ์ฌํ ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ๋ค. ์ด ๋ชจ๋ ์กฐ๊ฑด์ ํด๋นํ์ง ์์ผ๋ฉด 10๋ฒ๋ถ์ ์ ๋ณด ์ถ๋ ฅํ๋ค.
HashMap<String, String> map2 = new HashMap<String, String>(); map2.put("deptno", "์ ์ฃผ"); map2.put("dname", "์์ "); List<Dept> list1 = service.selectDynamicChoose(map2); for(Dept dept : list) { System.out.println(dept); }
dname๊ณผ loc๋ฅผ ์กฐ๊ฑด์ผ๋ก ๊ฒ์ฌํ๊ธฐ๋ก ํ์ผ๋๊น ํด์ฌ๋งต ํ์ ์ ๋ชจ๋ ์คํธ๋ง์ผ๋ก ๋ฐ์์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ๋งต์ ํค ๋ฐธ๋ฅ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ์๋น์ค์ ์ ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด์ ๋งต์ ์ธ์๋ก ์ ๋ฌํ๋ค.
HashMap<String, String> map2 = new HashMap<String, String>(); map2.put("deptno", "์ ์ฃผ"); map2.put("dname", "์์ "); List<Dept> list1 = service.selectDynamicChoose(map2); for(Dept dept : list) { System.out.println(dept); }
dname๊ณผ loc๋ฅผ ์กฐ๊ฑด์ผ๋ก ๊ฒ์ฌํ๊ธฐ๋ก ํ์ผ๋๊น ํด์ฌ๋งต ํ์ ์ ๋ชจ๋ ์คํธ๋ง์ผ๋ก ๋ฐ์์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ๋งต์ ํค ๋ฐธ๋ฅ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ์๋น์ค์ ์ ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉด์ ๋งต์ ์ธ์๋ก ์ ๋ฌํ๋ค.
public List<Dept> selectDynamicChoose(HashMap<String, String> map){ SqlSession session = MySqlSessionFactory.getSqlSession(); List<Dept> list = null; try { list = dao.selectDynamicChoose(session, map); } finally { session.close(); }return list; }
์๋น์ค์ ์ ๋ ํจ์๋ ๋งต์ ์ ๋ฐ์์๋ค. ์ธ์ ์ฐ๊ฒฐ ๋จผ์ ํด์ฃผ๊ณ ๋ฆฌํดํ ๋ฆฌ์คํธ ๋ง๋ ๋ค์์ dao์ ์ ๋ ํจ์ ํธ์ถํ๋ฉด์ ์ธ์๋ก ์์ ์ด ๋ง๋ ์ธ์ ์ด๋ ๋ฉ์ธ์์ ๋ฐ์์จ ๋งต์ ๋ด์์ ๋ณด๋ด์ค๋ค. ๊ทธ๋ฌ๊ณ ์ธ์ ๋ซ๊ณ ๋ฐ์์จ ๋ฆฌ์คํธ ๋ฆฌํดํ๊ณ ์๊ธฐ ํ ์ผ์ ๋๋๋ค.
public List<Dept> selectDynamicChoose(SqlSession session, HashMap<String, String> map) { List<Dept> list = session.selectList("com.dept.DeptMapper3.selectDynamicChoose", map); return list; }
dao๋ก ๊ฐ๋ณด์. dao๋ ์๋น์ค์์ ํธ์ถ๋ฐ์ ๋๋ก ์ธ์ ๊ณผ ๋งต์ ์ธ์๋ก ๋ฐ์์๋ค. ์๋น์ค๋ก ๋ฆฌํดํ ๋ฆฌ์คํธ์ ์ธ์ ์ ์ ๋ ๋ฆฌ์คํธ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ xml์ ์ฟผ๋ฆฌ๋ฌธ ์์ด๋์ ๋ฐ์์จ ๋งต์ ์ ๋ฌํ๊ณ ์ฟผ๋ฆฌ๋ฌธ ์คํ๋๊ฑธ ๋ฐ์์์ ๋ฆฌ์คํธ์ ๋ด๊ณ ๊ทธ๊ฑธ ๋ฆฌํดํ๋ค. ์ด์ ์ด๊ฑธ ๋ค๊ณ ์๋น์ค ๊ฐ๊ณ ๋ฉ์ธ ๊ฐ์ ๋ฉ์ธ์์ ๊ฒฐ๊ณผ์ถ๋ ฅํ๊ณ ๋๋๋ค.
multiSelect
<select id="multiSelect" parameterType="java.util.List" resultType="Dept"> select deptno, dname, loc from dept where deptno In <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select>
foreach ํ๊ทธ๋ ๋ ์ปฌ๋ ์ ์ ๋ด์์จ ๋ฐ์ดํฐ๋ฅผ in์ ์ ๋ชจ๋ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๋ฐ๋ณต ๋๋ฆด ๊ฐ ํญ๋ชฉ๋ค์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ item์ด๊ณ ์ปฌ๋ ์ ํ์ , ๋ฐํ๊ฐ์ ์์๊ณผ ๋ ํํ, ๋ฐ๋ณต๋ฌธ ๋ ๋๋ง๋ค ๋ถ์ฌ์ค ๊ตฌ๋ถ์๋ฅผ ์ง์ ํ ์ ์๋ค.
deptno๋ฅผ ๋ฆฌ์คํธ๋ก ์ฌ๋ฌ๊ฐ์ ๋๋ฒ๋ฅผ ๋ฐ์์์ ํด๋นํ๋ ์ ๋ณด๋ฅผ ์ ๋ ํ๋ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ๋ค. ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐ์๊ธฐ ๋๋ฌธ์ ์ปฌ๋ ์ ๋ ๋ฆฌ์คํธ๋ก ์ง์ ํ๋ค. in์ฐ์ฐ์ ๋ค๋ (๊ดํธ)๋ก ๋ฌถ์ด์ฃผ๊ธฐ ๋๋ฌธ์ ์คํ๊ณผ ํด๋ก์ฆ๋ฅผ ๊ดํธ๋ก ์ง์ ํ๋ค.
System.out.println("========================="); List<Integer> deptnoes = Arrays.asList(10,12,13); List<Dept> list2 = service.multiSelect(deptnoes); for (Dept dept : list2) { System.out.println(dept); }
์ ์๋ง ๋ฐ๋ ๋ฆฌ์คํธ ํ์ ์ ๋ณ์ deptnoes์ ๋ฐฐ์ด์ ๋ฃ์๊ฑฐ๋ค. ์ผ๋จ 10, 12, 13์ด ๋ฐฐ์ด์ธ๋ฐ ์ด๊ฑธ ๋ฆฌ์คํธ๋ก ๋ฐํํด์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ค๋ค. (Arrays.asList๋ ๋ฐฐ์ด์ ๋ฆฌ์คํธ๋ก ๋ฐํํด ์ค๋ค.) ๊ทธ๋ฆฌ๊ณ dept๋ง ๋ฐ๋ ๋ฆฌ์คํธ ํ์ ์ ๋ฆฌ์คํธ2์ ์๋น์ค์ ๋ฉํฐ์ ๋ ํจ์๋ฅผ ํธ์ถํด์ ์ธ์๋ก ์์์ ๋ฃ์ deptnoes๋ฅผ ์ ๋ฌํ๋ค.
public List<Dept> multiSelect(List<Integer> deptnoes){ SqlSession session = MySqlSessionFactory.getSqlSession(); List<Dept> list = null; try { list = dao.multiSelect(session, deptnoes); } finally { session.close(); }return list; }
๋ฉํฐ์ ๋ ํธ๋ ๋ฉ์ธ์์ deptnoes๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์๋ค. ์ธ์ ์ฐ๊ฒฐํ๊ณ ๋ฆฌ์คํธ ๋ง๋ ๋ค์์ ๋ฆฌ์คํธ์ dao์ ๋ฉํฐ์ ๋ ํจ์ ํธ์ถํด์ ์ธ์ ์ด๋ ๋ฐ์์จ ๋ถ์๋๋ฒ๋ฆฌ์คํธ ์ ๋ฌํ๊ณ ์ธ์ ๋ซ๊ณ ๋ฐ์์จ ๋ฆฌ์คํธ ๋ฐํํ๋ค.
public List<Dept> multiSelect(SqlSession session, List<Integer> deptnoes) { List<Dept> list = session.selectList("com.dept.DeptMapper4.multiSelect", deptnoes); return list; }
dao๋ ์ธ์ ์ด๋ ๋ถ์๋๋ฒ๋ฆฌ์คํธ ์ ์ ๋ฌ ๋ฐ์์ ๋ฆฌ์คํธ ๋ง๋ค๊ณ ์ฟผ๋ฆฌ๋ฌธ์ ์ฟผ๋ฆฌ๋ฌธ์์ด๋๋ ๋ถ์๋๋ฒ๋ฅผ ์ ๋ฌํ๋ค. ๋ฐ์์จ ๋ฆฌ์คํธ๋ฅผ ๋ฆฌํดํ๊ณ ๋ฉ์ธ๊น์ง ๋ฐ๋ ค๊ฐ์ ๋ฉ์ธ์์ ๋ฐ๋ณต๋ฌธ ๋๋ ค ์ถ๋ ฅํ๋ค.
multiDelte
<delete id="multiDelte" parameterType="java.util.List"> delete from dept where loc in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </delete>
Delete๋ฅผ ์ํํ ์ด ์ฟผ๋ฆฌ๋ฌธ์ ๋ฆฌ์คํธ ํ์ ์ผ๋ก loc๋ฅผ ๋ฐ์์ฌ๊ฑฐ๋ค.
List<String> loc = Arrays.asList("ํ๊ต", "๊ฒฝ๊ธฐ"); service.multiDelete(loc);
์ฌ๋ฌ๊ฐ์ ์ง์ญ์ ๋ณด๋ฅผ ๋ฆฌ์คํธ์ ๋ด๊ณ ์๋น์ค์ ๋๋ฆฌํธ ํจ์๋ฅผ ํธ์ถํ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ณด๋ด์ค๋ค.
public void multiDelete(List<String> loc) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.multiDelete(session, loc); session.commit(); } finally { session.close(); } }
DML์ ์ํ๋ง ํ๊ณ ๋ฐํ๊ฐ ์์ด๋ ๋๋๊น ๋ฆฌํดํ์ ์ void๋ก ํ๊ณ ํ๋ผ๋ฏธํฐ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์๋ค.
์ธ์ ์ฐ๊ฒฐํ๊ณ dao์ ๋ฉํฐ๋๋ฆฟ ํจ์๋ฅผ ํธ์ถํ๊ณ ์ธ์ , ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ค. DML์ ํธ๋์ญ์ ์๋๋ฐ์์ด๋ผ ์ปค๋ฐ ํด์ฃผ๊ณ ์์ ๋ฐ๋ฉํ๊ณ ๋๋ฌ๋ค.
public void multiDelete(SqlSession session, List<String> loc) { System.out.println(loc); int num = session.delete("com.dept.DeptMapper4.multiDelte", loc); System.out.println(num); }
dao๋ ๋ฆฌํดํ์ ์ void๋ก ์ค์ ํ๊ณ ํ๋ผ๋ฏธํฐ๋ก ์ธ์ , ๋ฆฌ์คํธ ๋ฐ์์๋ค. ์คํํ์ ์ถ๋ ฅ์ ์ํด num ๋ณ์ ๋ง๋ค์ด์ฃผ๊ณ ๋๋ฆฌํธ ์ฟผ๋ฆฌ๋ก ์์ด๋๋ ๋ฆฌ์คํธ ์ ๋ฌํด์ฃผ๊ณ ์ฟผ๋ฆฌ ์คํํด์จ ๊ฒฐ๊ณผ๋ฅผ num์ ๋ฃ์ด์ ํ์ ์ถ๋ ฅํ๋ค. ๋ฉ์ธ์ผ๋ก ๊ฐ์ ์คํํ๋ฉด ํ๊ต, ๊ฒฝ๊ธฐ ์ง์ญ์ ๋ถ์ ๋ ์ฝ๋๊ฐ ์ญ์ ๋ ๊ฑธ ๋ณผ ์ ์๋ค.
multiDelte2
<delete id="multiDelte2" parameterType="java.util.List"> delete from dept where deptno in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item.deptno} <!-- dept๊ฐ์ฒด์ deptno ์ฌ์ฉ --> </foreach> </delete>
deptno๋ฅผ ๋ฐ์์์ ๊ทธ ๋ถ์์ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ค.
List<Dept> depts = Arrays.asList(new Dept(12, "", ""), new Dept(13, "", "")); service.multiDelete2(depts); List<Dept> list = service.selectAll(); for (Dept dept : list) { System.out.println(dept);
Dept ํ์ ๋ง ๋ฐ๋ ๋ฆฌ์คํธ ์์ ๋ถ์ ๋ฒํธ๋ง ๋ด์ dept ์์ฑ์ ๋๊ฐ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฃ์ด์ค๋ค. ๊ทธ ๋ค์ ์๋น์ค์ ๋๋ฆฌํธ ํจ์๋ฅผ ํธ์ถํด์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ค. ์ญ์ ๋ฅผ ์ํํ๊ณ ๋์ ์ ์ ๋ง๋ค์๋ selectAll ํจ์๋ฅผ ํธ์ถํด์ ๋จ์ ๋ฐ์ดํฐ๋ค์ ์ถ๋ ฅํด๋ณผ ์ ์๋ค.
public void multiDelete2(List<Dept> depts) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.multiDelete2(session, depts); session.commit(); } finally { session.close(); } }
์๋น์ค๋ ๋ฆฌ์คํธ ์ ๋ฌ๋ฐ์ ์๊ณ , ์ธ์ ์ ์ฐ๊ฒฐํ๋ค. ์ฐ๊ฒฐ๋ ๊ฑฐ dao๋ก ๋ฆฌ์คํธ๋ ๋ณด๋ด๊ณ , ์ปค๋ฐํ๊ณ , ์ธ์ ์ ๋ซ๋๋ค.
public void multiDelete2(SqlSession session, List<Dept> depts) { int num = session.delete("com.dept.DeptMapper4.multiDelte", depts); System.out.println("์ญ์ ๋ ๊ฐฏ์"+num); }
dao๋ ์ธ์ ์ด๋ ๋ฆฌ์คํธ ๋ฐ์์ค๊ณ , ๋ฐ์๊ฑฐ ์ธ์ ์ผ๋ก ๋๊ฒจ์ ์ฟผ๋ฆฌ๋ฌธ ์ํํด์ค๊ณ , ํ์ ๋ด์์ ์ถ๋ ฅํ๋ค.
multiDelte3
<delete id="multiDelte3" parameterType="java.util.List"> delete from dept where loc in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item.loc} </foreach> </delete>
loc๋ฅผ ๋ฐ์์์ ๊ทธ ์ง์ญ์ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ค.
Dept dept1 = new Dept(); Dept dept2 = new Dept(); dept1.setLoc("๋ถ์ฐ"); dept2.setLoc("์ ์ฃผ"); List<Dept> depts = Arrays.asList(dept1, dept2); //List<Dept> depts = Arrays.asList(new Dept(12, "", ""), new Dept(13, "", "")); service.multiDelete3(depts); List<Dept> list = service.selectAll(); for (Dept dept : list) { System.out.println(dept); }
์ด๋ฒ์๋ dept ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์์ฑํ๊ณ ๊ฐ๊ฐ ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ๋ฆฌ์คํธ์ ๋ด๋๋ค. ์ฃผ์์ฒ๋ฆฌ ์น ๋ถ๋ถ์ ๋ฏ์ด๋ณด๋ฉด ์ ๋ ๊ฒ ๊ตฌ์ฑ๋์ด ์๋ค. ์๋น์ค์ delete ํจ์๋ฅผ ํธ์ถํด์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ๋ค.
public void multiDelete3(List<Dept> depts) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.multiDelete3(session, depts); session.commit(); } finally { session.close(); } }
ํ๋ ์ผ์ ์์ ๋๊ฐ๋ค.
public void multiDelete3(SqlSession session, List<Dept> depts) { System.out.println(depts); int num = session.delete("com.dept.DeptMapper4.multiDelte3", depts); System.out.println("์ญ์ ๋ ๊ฐฏ์"+num); }
delete๋ฅผ ์ํํ๊ณ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
multiInsert
<insert id="multiInsert" parameterType="arrayList"> insert all <foreach item="item" index="index" collection="list"> into dept (deptno, dname, loc) values (#{item.deptno}, #{item.dname}, #{item.loc}) </foreach> select * from dual </insert>
๋ฌด์กฐ๊ฑด insert all์ ์ฌ์ฉํ๋ค. ํ๋ผ๋ฏธํฐ ํ์ ์ ๋ฆฌ์คํธ๋ก ๋ฐ๋๋ค. ์ฌ๋ฌ ๊ฐ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ฌ ๋ถ๋ถ์ foreach๋ก ๋ฌถ์ด์ฃผ๊ณ ๊ทธ ๋ฐ์ ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ถ์ด์๋ค. ์์ ํ ์ด๋ธ์์ ๊ฐ์ ธ์จ ๋ชจ๋ ์ ๋ณด๋ฅผ deptํ ์ด๋ธ์ ์ฝ์ ํ๋ค.
dept1 = new Dept (13,"์์ ","ํ๊ต"); dept2 = new Dept(22, "๊ฐ๋ฐ", "๊ฒฝ๊ธฐ"); depts = Arrays.asList(dept1, dept2); service.multiInsert(depts);
์ธ์ํธํ ์ ๋ณด๋ฅผ ๋ฆฌ์คํธ์ ๋ด๊ณ ์๋น์ค์ ์ ๋ฌํ๋ค.
public void multiInsert(List<Dept> depts) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.multiInsert(session, depts); session.commit(); } finally { session.close(); } }
์๋น์ค๋ ์ธ์ ์ฐ๊ฒฐํ๊ณ ๋ฐ์์จ ๊ฑฐ๋ ๊ฐ์ด dao์ ๋๊ธฐ๊ณ ์ปค๋ฐํ๊ณ ํด๋ก์ฆํ๋ค.
public void multiInsert(SqlSession session, List<Dept> depts) { int num = session.insert("com.dept.DeptMapper4.multiInsert", depts); System.out.println("์ ๋ฐ์ดํธ ๊ฐฏ์"+num); }
dao๋ ๋ฐ์์จ๊ฑฐ ์ธ์ ์ ์ ๋ฌํด์ ์ฟผ๋ฆฌ ์ํํ๊ณ ์ญ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
multiUpdate
<update id="multiUpdate" parameterType="java.util.List" > update dept set loc='์ ์ฃผ' where deptno in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </update>
deptno๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐ์์์ ๊ทธ ๋ถ์์ ์์น๋ฅผ "์ ์ฃผ"๋ก ์ ๋ํ๋ค.
List<Integer> deptnoes = Arrays.asList(80, 88, 90); service.multiUpdate(deptnoes);
์ ์๋ง ๋ฐ๋ ๋ฆฌ์คํธ ํ์ ์ผ๋ก ๋ถ์๋ฒํธ ์ฌ๋ฌ๊ฐ ๋ฃ์ด์ฃผ๊ณ ์๋น์ค์ ์ ๋ํจ์ ํธ์ถํ๊ณ ์ธ์๋ฅผ ์ ๋ฌํ๋ค.
public void multiUpdate(List<Integer> deptnoes) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.multiUpdate(session, deptnoes); session.commit(); } finally { session.close(); } }
์ธ์ ์ฐ๊ฒฐํ๊ณ ์ธ์ ,๋ฆฌ์คํธ ์ ๋ฌ. ์ปค๋ฐ. ํด๋ก์ฆ.
public void multiUpdate(SqlSession session, List<Integer> deptnoes) { int num = session.update("com.dept.DeptMapper4.multiUpdate", deptnoes); System.out.println("update ๊ฐฏ์"+num); }
์ธ์ ์ ๋ฐ์์จ๊ฑฐ ์ ๋ฌํด์ ์ฟผ๋ฆฌ ์คํํ๊ณ ๋์ ๋ด์์ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ดํด๋ฆฝ์ค tern ์๋ฐ์คํฌ๋ฆฝํธ ์๋์์ฑ ํ๋ฌ๊ทธ์ธ ์ค์ (0) 2020.09.17 JAVA ์๋ฐ Eclipse jee, ํฐ์บฃ์๋ฒ ํ๊ฒฝ์ค์ (0) 2020.08.26 JAVA ์๋ฐ ๋ง์ด๋ฐํฐ์ค mybatis ์ฌ์ฉํ๊ธฐ (0) 2020.08.21 JAVA ์๋ฐ JDBC ์ฐ์ต - ์ํ์ ๋ณด ์กฐํํ๊ธฐ (0) 2020.08.20 JAVA ์๋ฐ JDBC ๋ฌธ์ ์ฐ์ต (0) 2020.08.19