본문 바로가기

Web/MyBatis

[ MyBatis ] ② 마이바티스의 기능과 SqlSession 클래스

마이바티스 기능

(1) 마이바티스 프레임워크의 특징

  • SQL 실행 결과를 자바 빈즈 또는 Map 객체에 매핑해 주는 Persistence 솔루션으로 관리한다. 즉 SQL을 소스 코드가 아닌 XML로 분리한다.
  • SQL문과 프로그래밍 코드를 분리해서 구현한다.
  • 데이터소스(DataSource) 기능과 트랜잭션 처리 기능을 제공한다.

 

(2) DataSource 기능

DataSource기능을 사용하려면, 1) action-mybatis.xml에서 이렇게 정의할 수 있고,

<beans>
	<bean id="propertyPlaceholderConfigurer"
	class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
	<value>/WEB-INF/config/jdbc/jdbc.properties</value>
	</property>
	</bean>
	
 	<bean id="dataSource"
		class="org.apache.ibatis.datasource.pooled.PooledDataSource">
		<property name="driver" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
	...
</beans>

2) mybatis.dtd를 이용하여 modelConfig.xml의 configuration 안에서 <environments> 태그에서 <dataSource> 태그를 정의할 수 있다

 

(3) SQL문과 프로그래밍 코드 분리

member.xml (class.xml) 에서 <mapper>태그안에 sql문 각각의 태그(select, insert, delete, update)와 id (resultType, resultMap, etc)를 지정하고, 단지 mapper를 통해 프로그래밍에서 사용하면 된다.

더보기

다음은 책에있는 예제를 예시로 들고왔다.

mapper 파일
DAO에서 사용하기

 

(4) SqlSession 클래스에서 제공하는 여러가지 메소드

메소드 기능
List selectList(query_id) id에 대한 select 문을 실행한 후 여러 레코드를 List로 반환
List selectList(query_id, 조건) id에 대한 select 문을 실행하면서 사용되는 조건도 전달
T selectOne(query_id) id에 대한 select 문을 실행한 후 지정된 타입으로 한 개의 레코드 반환
T selectOne(query_id, 조건) id에 대한 select 문을 실행하면서 사용되는 조건도 전달
Map<K,V> selectMap(query_id, 조건) id에 대한 select 문을 실행하면서 사용되는 조건도 전달. Map 타입으로 레코드 반환
int insert(query_id, Object obj) id에 대한 insert문을 실행하면서 객체의 값을 테이블에 추가
int update(query_id, Object obj) obj 객체의 값을 조건문의 수정 값으로 사용해 id데 대한 update문 실행
int delete(query_id, Object obj) obj 객체의 값을 조건문의 조건 값으로 사용해 id데 대한 delete문 실행

- 예제

@Repository("memberDAO")
public class MemberDAOImpl implements MemberDAO {
    @Autowired
	private SqlSession sqlSession;
  
	@Override
	public List selectAllMembers() throws DataAccessException {
		return sqlSession.selectList("mapper.member.listAllMembers");
	}

	@Override
	public int insertMember(MemberVO memberVO) throws DataAccessException {
		return sqlSession.insert("mapper.member.insertMember", memberVO);
	}
}

 

(5) 마이바티스로 조건값 전달하기

  • MemberDAO에서 메소드 호출시 전달된 조건 값은 매개변수 이름으로 SQL문의 조건식에 전달한다.
  • SQL문에서 조건값 사용 방법 : #{전달된 매개변수이름}

 

References

  1. 자바 웹을 다루는 기술

'Web > MyBatis' 카테고리의 다른 글

[ MyBatis ] MyBatis Framework란?  (0) 2022.07.05
[ MyBatis ] ③ 마이바티스 XML 설정 파일  (0) 2019.08.12