1. 다운받은 mybatis-3.x.x.zip 압축풀기
압축풀고 나온 jar파일을 XXproject/WebContent/WEB-INF/lib/ 폴더에 넣어두자.
2. JavaResources/src에 common.config 패키지를 만들자.
1) 해당 패키지에 mybatis-config.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>
<!-- 데이터베이스 트랜잭션 관리자 설정=========== -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED"> <!--myBatis의 풀을 사용하겠단 의미-->
<property name="driver"
value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="myshop" />
<property name="password" value="tiger" />
</dataSource>
</environment>
</environments>
<!-- 매퍼 정의================================ -->
<mappers>
<mapper resource="common/mapper/SampleMapper.xml" />
</mappers>
</configuration>
하나씩 살펴보자.
DOCTYPE을 통해 문서 타입을 configuration으로 설정해주고
태그를 사용하기 위해 DTD Config 3.0을 설정해준다.
<environments> 태그의 default는 개발환경을 설정할 때 쓰인다.
<environment> 태그의 id가 development로 작성되었기 때문에 같은 이름으로
default에 작성해준다.
<dataSource> 태그는 type="POOLED"를 통해 myBatis의 풀을 사용하겠단 의미다.
우리는 Oracle을 사용하기 때문에 url을 오라클로 지정해주고
sql name, password 를 자신의 아이디와 비밀번호를 작성해준다.
<mappers> 태그는 매퍼를 정의하는 태그이며
<mapper> 태그를 통해 xml파일을 생성해서 sql문을 작성한 파일과 매핑할 수 있도록 한다.
3. Mapper 파일 생성
1) 위의 <mapper> 태그에서 common/mapper/SampleMapper.xml을 지정해줬으므로
common/mapper 패키지를 생성하고 그 안에
SampleMapper.xml 파일을 생성하자.
2) 이 곳에서 쿼리문을 작성할 수 있다.
<?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="common.base.SampleMapper"> <!-- 임의로 정의 가능, 패키지 같은 의미라고 생각 -->
<!-- myshop 계정의 테이블 수를 가져오는 쿼리문을 써보자. -->
<select id="tableCount" resultType="int"> <!-- 쿼리에서 받은 데이터를 int로 받겠다는 의미 -->
select count(*) from tab
</select>
</mapper>
자신의 계정의 테이블 수를 가져오는 쿼리문을 작성해보자.
select count(*) from tab 쿼리를 <select> 태그 안에다가 작성해주자.
<mapper> 태그의 namespace속성은 작성할 때 중요하다. 또 쓰이니까 패키지 이름과 동일하게 지어주면 편하다.
4. xxxDAOMyBatis 클래스를 작성하자
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;
import java.util.*;
import java.io.*;
public class SampleDAOMyBatis {
// 네임스페이스 지정. SampleMapper.xml에 지정된 namespace값과 동일해야함
private final String NS = "common.base.SampleMapper";
/**사용자 정의 메소드: SqlSessionFactory객체를 반환하는 메소드*/
public SqlSessionFactory getSqlSessionFactory() {
// 디자인패턴, factory 패턴, 설계도 역할: mybatis-config.xml
// 설계도와 스트림 연결
//
// 공장을 지으려면 설계도가 필요
String resource="common/config/mybatis-config.xml";
// 설계도 역할을 하는 파일(mybatis 환경설정 파일)
// 설계도와 스트림 연결
InputStream is = null;
try {
is = Resources.getResourceAsStream(resource);
// 공장을 짓는 SqlSessionFactoryBuilder 생성
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // 건축가
// is를 넣어서 공장을 하나 지어준다.
SqlSessionFactory factory = builder.build(is); // 공장 짓기
return factory;
} catch (IOException e) {
e.printStackTrace();
return null;
}
} //-------------------------------
public int selectTableCount() {
SqlSessionFactory factory = this.getSqlSessionFactory();
// 공장을 통해 상품을 생산
SqlSession session = factory.openSession();
try {
int count = session.selectOne(NS+".tableCount");
//SampleMapper의 id의 tableCount가 들어간다.
// 결과가 하나이면 One, 여러개면 selectList 이런식으로 가져온다.
// 아이디 앞에 namespce 들어가야함
System.out.println("count="+count);
return count;
} finally {
if(session != null) session.close();
}
} //------------------------------
}
1) 네임스페이스 지정: 네임스페이스는 mapper.xml에서 만들 때 쓴 namespace와 동일하게 지정해준다.
2) SqlSession팩토리를 만들어준다. 이 때 설계도는 1번에 만들었던 mybatis-config.xml이다.
3) Session팩토리를 만들었다면 selectTableCount() 메소드를 만들고 팩토리에서 상품을 하나 생산한다.
SqlSession session = factory.openSession();
int count = session.selectOne(NS+".tableCount"); 를 작성해준다.
NS는 우리가 지정한 nameSpace 이고 tableCount는 SampleMapper.xml의 id와 동일하게 준다.
그리고 count 값을 리턴하자.
5. 예제 구현
셋팅이 좀 복잡하지만 그래도 셋팅해보고 잘 셋팅이 되었는지 구현해보자
myBatisTest.jsp 파일을 생성하고 common.base.SampleDAOMyBatis 를 임포트 해주자
<%@page import="common.base.SampleDAOMyBatis"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
SampleDAOMyBatis sample = new SampleDAOMyBatis();
int count = sample.selectTableCount();
%>
<h1>테이블 수 : <%=count %></h1>
SampleDAOMyBatis 객체를 생성해주고
만들었던 메소드를 불러오자
성공 화면
'프로그래밍 > JSP' 카테고리의 다른 글
알기 쉬운 JSP 필터 순서 설정하는 방법에 대해 알아보자 (0) | 2020.07.29 |
---|---|
알기 쉬운 JSP DBCP 셋팅 방법에 대해 알아보자 (1) | 2020.07.28 |