spring
[스프링] mybatis
꿈꾸는토끼
2021. 1. 12. 15:25
설정하기
pom.xml에 라이브러리 등록해주기.
스프링 트랜잭션은 별다른 이유가 없는한 스프링프레임워크 버전과 맞춰준다. (나는 3.1.1이었음)
sqlsessionfactory bean등록하기 (id=SqlSessionFactory와 SqlSessionTemplate부분)
경로 안에있는 모든 xml파일을 mapper로사용하겠다는뜻
아직 mapper가 없어서 warn이뜨지만 제대로 실행되는 것을 볼 수 있다.
SqlSessionTemplate을 이용한 DAO 구현
예제1)
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
Mapper 작성 (id=selectAll)
package com.aia.firstspring.member.dao;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.aia.firstspring.domain.Member;
@Repository
public class MybatisMemberDao {
private String nameSpace = "com.aia.firstspring.mybatis.mapper.memberMapper";
@Autowired
private SqlSessionTemplate template;
public List<Member> selectMemberList(){
return template.selectList(nameSpace + ".selectAll");
}
}
Dao 작성
이전 코드와 비교했을때 Mybatis를 이용하면 코드가 매우간결해지는 것을 볼 수 있다.
(물론 서비스에서 Dao를 바꿔줘야하는 것 잊지말자)
예제2)
mapper 작성
public int insertMember(Member member) {
return template.update(nameSpace+ ".insertMember", member);
}
Dao
예제3) 외래키값 가져오기.
이렇게 keyproperty를 이용하면 idx값을 받아올 수 있다.
자동 매퍼 생성 기능을 이용한 DAO 구현
package com.aia.firstspring.member.dao;
import java.util.List;
import com.aia.firstspring.domain.Member;
public interface MemberInterfaceDao {
//abstract public 생략
List<Member> selectMemberList();
int insertMember(Member member);
int totalCount();
}
인터페이스생성!
MyBatis는 인터페이스를 이용해서 런타임에 매퍼 객체를 생성하는 기능을 제공한다.
마찬가지로 서비스에서 Dao를 바꿔줘야하는 것 잊지말아야하고
template를 주입받아야 한다.
Mapper
mapper에서는 인터페이스 안에 있는 메서드와 이름을 같에 만들어 주는 것이 중요하다.
이름이 같아야 자동으로 인식되기 때문이다 :)