1) Oracle database :: TABLE ์์ฑ
CREATE TABLE SCORE(
SNO NUMBER(10),
NAME VARCHAR2(30),
KOR VARCHAR2(30),
ENG VARCHAR2(30),
MATH VARCHAR2(30)
);
ALTER TABLE SCORE ADD CONSTRAINT SCORE_SNO_PK PRIMARY KEY (SNO); -- PK
CREATE SEQUENCE SCORE_SEQ NOCACHE; --์ํ์ค
2) VO ๋ง๋ค๊ธฐ
package com.simple.basic.command;
public class ScoreVO {
private int sno;
private String name;
private String kor;
private String eng;
private String math;
public ScoreVO() {
}
public ScoreVO(int sno, String name, String kor, String eng, String math) {
super();
this.sno = sno;
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKor() {
return kor;
}
public void setKor(String kor) {
this.kor = kor;
}
public String getEng() {
return eng;
}
public void setEng(String eng) {
this.eng = eng;
}
public String getMath() {
return math;
}
public void setMath(String math) {
this.math = math;
}
}
3) Mapper.java / Mapper.xml ๋ง๋ค๊ธฐ
๐root-context.xml์ ์ถ๊ฐ
ํด๋น ํจํค์ง๋ฅผ ์ฝ์ด์ ์ธํฐํ์ด์ค์ ์์น๋ฅผ ํ์ธ (@Mapper)
<mybatis-spring:scan base-package="com.simple.basic.*"/>
๐mapper.java
- @Mapper ์ด๋ ธํ ์ด์ ํตํด MyBatis๊ฐ ์ด ์ธํฐํ์ด์ค๋ฅผ ์ธ์ํ๊ฒ ํด์ค๋ค.
- ๋ฑ๋ก, ์กฐํ, ์ญ์ ๋ฅผ ์ํ ๋ฉ์๋ interface ๋ฅผ ์ ์ธํด์ค๋ค.
package com.simple.basic.service.score;
import java.util.ArrayList;
import org.apache.ibatis.annotations.Mapper;
import com.simple.basic.command.ScoreVO;
@Mapper //๋งคํผ์
public interface ScoreMapper {
public void regist(ScoreVO vo); //๋ฑ๋ก
public ArrayList<ScoreVO> getScore(); //์กฐํ
public void delete(int sno); //์ญ์
}
๐<mapper> namespace
namespace ์์ฑ์ interface ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ๋ง์ถ๋ค.
<?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">
<mapper namespace="com.simple.basic.service.score.ScoreMapper">
</mapper>
๐ ๋ฑ๋ก insert
๋งค๊ฐ๋ณ์๋ 1๊ฐ์ฌ์ผ ํจ. voํ์ ์ ๊ฐ์ฒด๋ผ๋ฉด #{getter} ์ฌ์ฉํด์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐธ์กฐํจ
SCORE_SEQ.NEXTVAL: SCORE_SEQ๋ผ๋ ์ํ์ค ๊ฐ์ฒด์์ ๋ค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
<insert id="regist" parameterType="ScoreVO">
INSERT INTO SCORE(SNO, NAME, KOR, ENG, MATH)
VALUES(SCORE_SEQ.NEXTVAL, #{name}, #{kor}, #{eng}, #{math} )
</insert>
๐ ์กฐํ select
resultType ์ ํ์๋ก ์ ์ด์ค๋ค. select ๊ฐ ๋ฐํ๋ฐ์ ํ์ ์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
<select id="getScore" resultType="ScoreVO">
select * from SCORE order by sno desc
</select>
๐ ์ญ์ delete
ํ๋ผ๋ฏธํฐ๊ฐ 1๊ฐ์ด๋ฉด ์ธํฐํ์ด์ค์ ๋งค๊ฐ๋ณ์ ๋ช ์ #{๋งค๊ฐ๋ณ์} ๋ก ์ฐ๋ฉด ๋๋ค.
<delete id="delete" parameterType="int">
delete from SCORE where sno = #{sno}
</delete>
(+) DAO ์ฌ์ฉ ์
@Repository("Y") ๋ฆฌํฌ์งํ ๋ฆฌ(Repository) ๋น์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉ (์ฆ DAO ์ญํ ์ ํจ์ ๋ํ๋ธ๋ค)
@Qualifier("x")๋ ์์กด ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.
๊ฐ์ ํ์ ์ ์ฌ๋ฌ ๋น์ด ์์ ๋ ( ์ง์ ํด์ฃผ์ง ์์ผ๋ฉด ์ด๋ค ๋น์ ์ฃผ์ ํด์ผํ๋์ง ๋ชฐ๋ผ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๋ค.)
์ด๋ค ๋น์ ์ฃผ์ ํด์ผ ํ ์ง ๋ช ํํ ์ง์ ํ๊ธฐ ์ํด
(@Qualifier ์ ๋ ธํ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค. "x"๋ ์ฃผ์ ํ ๋น์ ์ด๋ฆ์ ๋ช ์ํ๋ ๊ฐ)
package com.simple.basic.service.score;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.simple.basic.command.ScoreVO;
import com.simple.basic.service.score.impl.ScoreDAO;
@Service("x") //๋ฐ๋์ component-scan์ ์ํ์ฌ ์ฝํ์ผ ํจ
public class ScoreServiceImpl implements ScoreService {
@Autowired
@Qualifier("y")
ScoreDAO scoreDAO;