성장 일기/쌍용교육센터 / / 2023. 5. 25. 10:32

0517/MyBatis에서 CRUD 사용

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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);

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유