본문 바로가기

MyBatis

JSP + MyBatis3 쉽게 적용하기 #1

반응형


개인적으로 myBatis는 공식 사이트를 참고하여 공부하는걸 추천한다.

한글로 되어 있으니 보기도 편하게 되어 있다. [MyBatis 공식 홈페이지 바로가기]





그래도 "난 지금당장 mybatis를 사용해야 해. 그것도 jsp에 !!" 하는 분들을 위해  jsp에 mybatis를 사용하는 방법을 설명하겠다.



오늘은 데이터를 가져오는(SELECT) 부분만 설명을 진행하겠다. 이것만 이해해도 myBatis의 나머지 기능을 사용하는데 쉽다.



테스트 환경 : tomcat7 + jsp + mybatis3.1 + mysql5.1






오늘 설명하는 샘플의 전체 구조는 다음과 같다.





1. mybatis, mysql jdbc 드라이버 다운


mybatis-3.1.1.jar


mysql-connector-java-5.1.6.jar




2. 다운받은 라이브러리는 WEB-INF/lib 안에 추가한다.



3. com.test.sqlMap 패키지를 만들고 그 아래 SqlSessionManager.java를 생성한다.

package com.test.sqlMap;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SqlSessionManager {

	
	public static SqlSessionFactory sqlSession;


	static {
		String resource = "com/test/sqlMap/Configuration.xml";
		
		Reader reader;
		

		try {
			reader = Resources.getResourceAsReader( resource );
			sqlSession = new SqlSessionFactoryBuilder().build( reader );
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
	
	
	public static SqlSessionFactory getSqlSession() {
		return sqlSession;
	}
}


* 해당 클래스는 myBatis 설정 파일을 읽어 DB 커넥션을 맺은뒤 커넥션 맺은 session을 반환해 준다



4. com.test.sqlMap 패키지 안에 Configuration.xml 파일을 생성한다.

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration
	PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
	<settings>
		<setting name="cacheEnabled" value="false" />
		<setting name="useGeneratedKeys" value="true" />
		<setting name="defaultExecutorType" value="REUSE" />
	</settings>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/testDB" />
				<property name="username" value="test" />
				<property name="password" value="test12" />
			</dataSource>
		</environment>
	</environments>

	<mappers>

		<mapper resource="com/test/sqlMap/mapper/test.xml" />
		
	</mappers>
</configuration> 


* DB 접속정보 및 기타 설정등을 할 수 있는 설정파일이다. Property 정보에는 본인의 DB 정보를 입력해 준다.



5. com.test.sqlMap.mapper 패키지를 만들고 그 안에 test.xml 을 생성한다.

<?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="Test">
	
	<select id="getCount" resultType="int">
	
		SELECT
			count(*)
		FROM
			TB_test a
	
	</select>
	
	
	<select id="getContents" resultType="hashmap">
	
		SELECT
			id, name
		FROM
			TB_test a
		WHERE
			id = 'admin'
	
	</select>
	
	
	<select id="getList" resultType="hashmap">
	
		SELECT
			id, name
		FROM
			TB_test a
	
	</select>
	
	
	<select id="getCountP" parameterType="hashmap" resultType="int">
	
		SELECT
			count(*)
		FROM
			TB_test a
		WHERE
			name = #{name}
	
	</select>
	
	
	<select id="getContentsP" parameterType="hashmap" resultType="hashmap">
	
		SELECT
			id, name
		FROM
			TB_test a
		WHERE
			id = #{name} and age = #{age}
	
	</select>


</mapper>


* myBatis를 통해 DB를 다룰때 사용할 파일이다. 실행하고자 할 쿼리 모음이라고 생각하면 편하다.



6. 최상위에 index.jsp 파일을 만든다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.test.sqlMap.SqlSessionManager"%> <%@page import="org.apache.ibatis.session.SqlSessionFactory"%> <%@page import="org.apache.ibatis.session.SqlSession"%> <%@page import="java.util.*"%> <% SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession(); SqlSession sqlSession = sqlSessionFactory.openSession(); try{ // 단일 값 가져오기 int cnt = sqlSession.selectOne("Test.getCount") ; // 단일행 가져오기 HashMap hm = sqlSession.selectOne("Test.getConents") ; // 리스트 가져오기 List list = sqlSession.selectList("Test.getList") ; // 가져온 리스트 사용하기 if(list.size() > 0){ for(int i=0; i < list.size(); i++){ HashMap rs = (HashMap)list.get(i) ; } } // String parameter 넘겨서 단일 값 가져오기 String name = "홍길동" ; int pCnt = sqlSession.selectOne("Test.getCountP", name) ; // HashMap parameter 넘겨서 단일 행 가져오기 HashMap pHm = new HashMap(); pHm.put("name", "홍길동") ; pHm.put("age", "28") ; HashMap pRs = sqlSession.selectOne("Test.getConentsP", pHm) ; }catch(Exception e){ e.printStackTrace() ; }finally{ sqlSession.close() ; } %>






[간략설명]


SELECT (index.jsp)

 selectOne

 단일 행 또는 단일 값을 가져올때 사용

 selectList

 리스트로 되어 있는 항목을 가져올때 사용



Mapper (test.xml)

  namespace

 매퍼 이름 - sqlSession.selectOne("Test.getConentsP", pHm) ;

 id

 호출할 ID 이름 - sqlSession.selectOne("Test.getConentsP", pHm) ;

 resultType

 데이터 반환 형식 - int, string, hashmap

 parameterType

 사용할 인자값 형식 - int, string, hashmap


'MyBatis' 카테고리의 다른 글

MyBatis3 동적 쿼리(if, choose)  (2) 2014.08.10
JSP + MyBatis3 트랜잭션 처리  (0) 2014.08.10
MyBatis3 resultType을 자바빈으로 지정하기  (0) 2014.08.09
MyBatis3 User Guide  (0) 2014.08.08
JSP + MyBatis3 쉽게 적용하기 #2  (0) 2014.08.08