Backend/mybatis

[mybatis]๋งคํผ ๋ฐ”์ธ๋”ฉ(Mapper Binding)

sukii 2024. 3. 6. 19:14
๋ฐ˜์‘ํ˜•

๐Ÿค”๋งคํผ ๋ฐ”์ธ๋”ฉ(Mapper Binding) : SQL ๋ช…๋ น์€ XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์— ๋“ฑ๋กํ•˜๊ณ  DAO ํด๋ž˜์Šค๋Š” Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ

=> ๋งคํผ ๋ฐ”์ธ๋”ฉ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ๊ณผ Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋งคํผ๋กœ ๋“ฑ๋ก๋˜์–ด ๋™์ž‘๋˜๋„๋ก ์„ค์ • ๊ฐ€๋Šฅ
=> mapper ์—˜๋ฆฌ๋จผํŠธ์—๋Š” XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ ๋˜๋Š” Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋งŒ ๋งคํผ๋กœ ๋“ฑ๋กํ•˜์—ฌ ์‚ฌ์šฉ

 

์‹ค์Šต ์ฝ”๋“œ๐Ÿ‘ฉ‍๐Ÿ’ป

โฌ‡๏ธmybatis-config.xml ํŒŒ์ผ์— Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ๋งŒ ๋งคํผ๋กœ ๋“ฑ๋กํ•จ

//์ƒ๋žต	
	<mappers>
		<package name="xyz.itwill.mapper"/>
	</mappers>
</configuration>

 

โšซXML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ๊ณผ Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ๋กœ ๋งคํผ ๋ฐ”์ธ๋”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™โšซ
1) XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์—์„œ mapper ์—˜๋ฆฌ๋จผํŠธ์˜ namespace ์†์„ฑ๊ฐ’์œผ๋กœ Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋กœ ์„ค์ •

    => MyMemberMapper๋กœ๋งŒ ์ž‘์„ฑ๋งŒ ๋ฐ”์ธ๋”ฉ ์•ˆ๋จ!!!

2) XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์—์„œ SQL ๋ช…๋ น์ด ๋“ฑ๋ก๋œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ์—์„œ ๊ฐ™์€ ํ˜•์‹์˜ ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋กœ ์„ ์–ธ

   => ์ด๊ฑด ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ๋งคํผ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ๋ด์•ผํ•จ

 

โฌ‡๏ธXML๊ธฐ๋ฐ˜ ๋งคํผ ํŒŒ์ผ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.itwill.mapper.MyMemberMapper">
	<insert id="insertMember" parameterType="MyMember">
		insert into mymember values(#{id}, #{name}, #{phone}, #{email})
	</insert>
	
	<update id="updateMember" parameterType="MyMember">
		update mymember set name=#{name}, phone=#{phone}, email=#{email} where id=#{id}	
	</update>
	
	<delete id="deleteMember" parameterType="string">
		delete from mymember where id=#{id}	
	</delete>
	
	<select id="selectMember" parameterType="string" resultType="MyMember">
		select id, name, phone, email from mymember where id=#{id}
	</select>
	
	<select id="selectMemberList" resultType="MyMember"> 
		select id, name, phone, email from mymember order by id
	</select>
</mapper>

 

โฌ‡๏ธ Interface๊ธฐ๋ฐ˜ ๋งคํผ ํŒŒ์ผ

โ–ช๏ธ SQL ๋ช…๋ น์ด ๋“ฑ๋ก๋œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ๋ฉ”์†Œ๋“œ๋กœ ์ž‘์„ฑ
   => ์—˜๋ฆฌ๋จผํŠธ์˜ id ์†์„ฑ๊ฐ’์œผ๋กœ ์ถ”์ƒ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„ ์ž‘์„ฑ
   => ์—˜๋ฆฌ๋จผํŠธ์˜ parameterType ์†์„ฑ๊ฐ’์œผ๋กœ ์ถ”์ƒ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž๋ฃŒํ˜• ์ž‘์„ฑ
   => ์—˜๋ฆฌ๋จผํŠธ์˜ resultType ์†์„ฑ๊ฐ’์œผ๋กœ ์ถ”์ƒ๋ฉ”์†Œ๋“œ์˜ ๋ฐ˜ํ™˜ํ˜• ์ž‘์„ฑ - ๋‹ค์ค‘ํ–‰์ด ๊ฒ€์ƒ‰๋˜๋Š” ๊ฒฝ์šฐ List ๊ฐ์ฒด์˜ ์š”์†Œ ์ž๋ฃŒํ˜•์œผ๋กœ ์„ค์ •

package xyz.itwill.mapper;

import java.util.List;

import xyz.itwill.dto.MyMember;

//XML ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ๊ณผ ๋ฐ”์ธ๋”ฉ๋  Interface ๊ธฐ๋ฐ˜์˜ ๋งคํผ ํŒŒ์ผ - ์ธํ„ฐํŽ˜์ด์Šค
public interface MyMemberMapper {
	int insertMember(MyMember member);
	
	int updateMember(MyMember member);
	
	int deleteMember(String id);
	
	MyMember selectMember(String id);
	
	List<MyMember> selectMemberList();
}

 

๋ฐ˜์‘ํ˜•