쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/mybatisTest에 올려두었습니다.
MyBatis 사용법
- Mapper XML 작성법
<mapper namespace="kr.co.sist.testMapper">
<!-- 쿼리문을 작성할 노드 만든다. -->
</mapper>
insert
- <mapper> 안에 작성
<!--
입력데이터형 : Java에서 사용하는 모든 데이터형을 사용할 수 있다.
단일형 – int, double, Integer, String
복합형 – VO
-->
<insert id="아이디" parameterType="입력데이터형">
<!-- insert query 문 작성
입력데이터형의 값 사용 -->
#{ 이름 } <!-- 입력값을 bind변수로 처리할 때, 입력값이 문자열일지라도 '를 사용하지 않는다. -->
${ 이름 } <!-- 입력값을 쿼리문에 직접넣어 처리할 때 입력값이 문자열인 경우에는 반드시 '를 사용한다. -->
</insert>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
int cnt=ss.insert("아이디", 값 );// 결과를 받는다.
- 쿼리 생성
<!-- parameterType에 <typeAlias>에 정의된 이름이 들어갈 수 있다.-->
<insert id="insertDept" parameterType="test.DeptVO">
insert into dept(deptno,dname,loc)
values( #{ deptno }, #{ dname }, '${ loc }' )
</insert>
- MyBatis Handler에서 호출
int cnt=ss.insert("네임스페이스명.insertDept", DeptVO 객체명 );
update
- <mapper> 안에 작성
<update id="Handler에서 사용할 아이디" parameterType="입력값">
update 테이블명
set 컬럼명=#{ 값 }, 컬럼명=#{ 값 } ,...
where 컬럼명=#{ 값 }
</update>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
ss.update("아이디", 값);
- 부서번호에 해당하는 부서명, 위치 변경 쿼리 생성
<!--
아이디에 해당하는 노드를 찾고
입력 값을 parameterType에 넣고
값을 사용한 쿼리문이 생성
-->
<update id="updateDept" parameterType="DeptVO">
update dept
set dname=#{ dname }, loc=#{ loc }
where deptno=#{ deptno }
</update>
- MyBatis Handler에서 호출
int cnt=ss.update("updateDept", new DeptVO(10,"관제부","경기"));
delete
- <mapper> 안에 작성
<delete id="Handler에서 사용할 아이디" parameterType="입력값">
delete from 테이블명
where 컬럼명=#{ 값 }
</delete>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
int cnt=ss.delete("아이디",값);
- 부서번호가 10번인 부서를 삭제 쿼리 생성
<delete id="deleteDept" parameterType="int">
delete from dept
where deptno=#{ deptno }
</delete>
- MyBatis Handler에서 호출
int cnt=ss.delete("deletDept", 10);
select
- <mapper> 안에 작성
- 입력 되는 값과 반환되는 값을 구분하기 위해 VO를 만들 때에는
입력 값은 VO로 끝나고, 조회 값은 Domain으로 끝난다.( DeptVO, DeptDomain )
* 한 행 조회
- 쿼리 작성
<select id="Handler식별 아이디" resultType="반환값" parameterType="입력값">
select 컬럼명,...
form 테이블명
where 컬럼명=#{ 값 }
</select>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
XxxDomain xd=ss.selectOne("아이디", 값);
- 부서 번호에 해당하는 부서명과 위치 조회
<select id="selectDept" resultType="DeptDomain" parameterType="int">
select dname, loc
from dept
where deptno=#{ deptno }
</select>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
DeptDomain dd=ss.selectOne("selectDept", 10);
* 여러 행 조회
- Framework에서 조회 결과를 Domain에 저장하고, List에 할당하여 반환한다.
<select id="Handler식별 아이디" resultType="반환값" parameterType="입력값">
select 컬럼명,...
form 테이블명
where 컬럼명=#{ 값 }
</select>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
List<E> list=ss.selectList("아이디", 값);
- 사원테이블에서 부서 번호에 해당하는 사원의 사원번호, 사원명, 입사일 조회 쿼리
<select id="selectEmp" resultType="EmpDomain" parameterType="Integer">
select empno, ename, hiredate
form emp
where deptno=#{ deptno }
</select>
- MyBatis Handler에서 호출
SqlSession ss=SqlSqlFactory.openSession();// id에 해당하는 node 찾고 값을 넣는다.
List<EmpDomain> list=ss.selectList("selectEmp", 10);
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0519/<resultMap>, 동적 쿼리 (0) | 2023.05.25 |
---|---|
0518/ <typeAlias>, 쿼리문 태그(<, >) 처리 (0) | 2023.05.25 |
0516/MyBatis 설정, properties (0) | 2023.05.17 |
0515/DI, 의존성 주입 종류 (0) | 2023.05.15 |
0512/Spring, 강결합, 약결합 (1) | 2023.05.15 |