Search
Duplicate

๋งคํผ ์ž‘์„ฑํ•˜๊ธฐ

๋งคํผ ํŒŒ์ผ(XML)

โ€ข
๋™์ž‘ ๊ตฌ์กฐ
โ€ข
๊ธฐ๋ณธ ์ฝ”๋“œ
โ€ข
๋งคํผ ํƒœ๊ทธ
โ€ข
ํƒœ๊ทธ ์†์„ฑ
โ€ข
์˜ˆ์‹œ

๋™์ž‘ ๊ตฌ์กฐ

MyBatis๋Š” XML ๋งคํผ ํŒŒ์ผ๊ณผ Java ๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ๊ตฌ์กฐ

Mapper.xml ํŒŒ์ผ: src/main/resources ํด๋” ์•„๋ž˜์— ์ž‘์„ฑ
Mapper.java ํŒŒ์ผ: src/main/java ํด๋” ์•„๋ž˜์— ์ž‘์„ฑ
๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ: ๋‘ ํŒŒ์ผ์€ ๋™์ผํ•œ ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์— ์œ„์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

๋งคํ•‘ ์›๋ฆฌ

id ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ช… ๋งคํ•‘: XML ๋งคํผ์˜ id ์†์„ฑ๊ฐ’๊ณผ Java ๋งคํผ์˜ ๋ฉ”์†Œ๋“œ๋ช…์ด ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ์‹œ: ๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด XML ๋งคํผ ํŒŒ์ผ์˜ ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค

๋ฐ˜ํ™˜ ํƒ€์ž…

<select> ํƒœ๊ทธ: resultType ๋˜๋Š” resultMap ์†์„ฑ์œผ๋กœ ์ง€์ •ํ•œ ํƒ€์ž…์œผ๋กœ ์ž๋™ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค
<insert>, <update>, <delete> ํƒœ๊ทธ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ๋œ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (int ํƒ€์ž…)

๊ธฐ๋ณธ ์ฝ”๋“œ

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace="๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค ๊ฒฝ๋กœ" --> <mapper namespace="๋งคํผ์ธํ„ฐํŽ˜์ด์Šค ๊ฒฝ๋กœ"> </mapper>
XML
๋ณต์‚ฌ

๋งคํผ ํƒœ๊ทธ

ํƒœ๊ทธ
์„ค๋ช…
<select>
SELECT ์ฟผ๋ฆฌ๋ฅผ ์ •์˜
<insert>
INSERT ์ฟผ๋ฆฌ๋ฅผ ์ •์˜
<update>
UPDATE ์ฟผ๋ฆฌ๋ฅผ ์ •์˜
<delete>
DELETE ์ฟผ๋ฆฌ๋ฅผ ์ •์˜

ํƒœ๊ทธ ์†์„ฑ

์†์„ฑ
์„ค๋ช…
id
๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ ์ด๋ฆ„๊ณผ ๋งคํ•‘
resultType
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋งคํ•‘ํ•  Java ํƒ€์ž… ์ง€์ •
resultMap
๋ณต์žกํ•œ ๊ฒฐ๊ณผ ๋งคํ•‘์„ ์œ„ํ•œ resultMap์˜ id ์ฐธ์กฐ
parameterType
ํŒŒ๋ผ๋ฏธํ„ฐ์˜ Java ํƒ€์ž… ์ง€์ •

์˜ˆ์‹œ

BoardMapper.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace="๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค ๊ฒฝ๋กœ" --> <mapper namespace="com.aloha.mybatis.mapper.BoardMapper"> <!-- ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก --> <!-- <select id="list" resultType="com.aloha.mybatis.dto.Board"> --> <select id="list" resultType="Board"> SELECT * FROM board ORDER BY created_at DESC </select> <!-- ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ --> <select id="select" resultType="Board"> SELECT * FROM board WHERE no = #{no} </select> <!-- ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก --> <insert id="insert"> INSERT INTO board ( id, title, writer, content ) VALUES ( #{id}, #{title}, #{writer}, #{content} ) </insert> <!-- ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • --> <update id="update"> UPDATE board SET title = #{title} ,writer = #{writer} ,content = #{content} WHERE no = #{no} </update> <!-- ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ --> <delete id="delete"> DELETE FROM board WHERE no = #{no} </delete> </mapper>
XML
๋ณต์‚ฌ

BoardMapper.java

package com.aloha.mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.aloha.mybatis.dto.Board; @Mapper public interface BoardMapper { // ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก List<Board> list() throws Exception; // ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ Board select(Integer no) throws Exception; // ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก int insert(Board board) throws Exception; // ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • int update(Board board) throws Exception; // ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ int delete(Integer no) throws Exception; }
Java
๋ณต์‚ฌ
@Mapper ์–ด๋…ธํ…Œ์ด์…˜
MyBatis์—์„œ @Mapper ์–ด๋…ธํ…Œ์ด์…˜์€ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ MyBatis ๋งคํผ ์ธํ„ฐํŽ˜์ด์Šค์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

โ€ข
์ž๋™ ์Šค์บ”: Spring Boot๋Š” @Mapper๊ฐ€ ๋ถ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์Šค์บ”ํ•˜์—ฌ MyBatis ๋งคํผ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
โ€ข
XML ๋งคํ•‘: ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ์™€ XML ํŒŒ์ผ์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๊ตฌํ˜„์ฒด ์ƒ์„ฑ: MyBatis๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

@Mapper public interface BoardMapper { // ๋ฉ”์„œ๋“œ ์„ ์–ธ๋งŒ ํ•˜๋ฉด MyBatis๊ฐ€ XML์˜ SQL๊ณผ ์ž๋™ ๋งคํ•‘ List<Board> list() throws Exception; }
Java
๋ณต์‚ฌ
@Mapper ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„์˜ ์„ค์ • ์—†์ด MyBatis ๋งคํผ๋ฅผ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.