JSP에 MyBatis 연결하기
* mysql-connector-java jar 파일이 연결되어있다는 가정 하에서 진행할 것이다.
* 테스트해보기 위한 테이블을 미리 만들어 준다.
create table jspdb.member (
id int primary key auto_increment,
name varchar(10) not null,
age int
);
INSERT INTO jspdb.member(name, age) values('송유진', 23);
(member Table select 한 것)
[1] 아래의 jar 파일을 눌러서 다운받는다.
[2] 이클립스에서 dynamic web project 를 생성하고 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;
//myBatis 설정 파일을 읽어 DB 커넥션을 맺은뒤 커넥션 맺은 session을 반환
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;
}
}
[4] com.test.sqlMap 패키지 안에 Configuration.xml 를 생성하고 아래 코드를 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- DB 접속정보 및 기타 설정등을 할 수 있는 설정파일 -->
<!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/jspdb" />
<property name="username" value="uzini" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/test/sqlMap/mapper/test.xml" />
</mappers>
</configuration>
property url은 각자의 포트와 데이터베이스명이 들어가도록 하고 usrname, password 도 알맞게 입력한다.
[6] com.test.sqlMap.mapper 패키지를 만들고 text.xml을 작성한다.
myBatis를 통해 DB를 다룰때 사용할 파일이다. 실행하고자 할 쿼리 모음이다.
<?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">
<!-- myBatis를 통해 DB를 다룰때 사용할 파일이다. 실행하고자 할 쿼리 모음 -->
<mapper namespace="Test">
<select id="getCount" resultType="int">
SELECT
count(*)
FROM
member
</select>
<select id="getContents" resultType="hashmap">
SELECT
id, name
FROM
member
WHERE
id = 'admin'
</select>
<select id="getList" resultType="hashmap">
SELECT
id, name
FROM
member
</select>
<select id="getCountP" parameterType="hashmap" resultType="int">
SELECT
count(*)
FROM
member
WHERE
name = #{name}
</select>
<select id="getContentsP" parameterType="hashmap" resultType="hashmap">
SELECT
id, name
FROM
member
WHERE
id = #{name} and age = #{age}
</select>
</mapper>
[7] WebContent 안에 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.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession();
SqlSession sqlSession = sqlSessionFactory.openSession();
try{
// 단일 값 가져오기
int cnt = sqlSession.selectOne("Test.getCount") ;
System.out.println("전체 Cnt : " + cnt);
// 단일행 가져오기
HashMap hm = sqlSession.selectOne("Test.getContents") ;
// 리스트 가져오기
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.getContentsP", pHm) ;
}catch(Exception e){
e.printStackTrace() ;
}finally{
sqlSession.close() ;
}
%>
<h1>hello world</h1>
</body>
</html>
전체 Cnt : 1
이라고 콘솔에 출력된다면 성공이다.
참조
http://fruitdev.tistory.com/29
'Java & JSP' 카테고리의 다른 글
[JSP] eclipse에서 web.xml 생성 방법 (0) | 2018.04.22 |
---|---|
[JSP] URL로 받은 문자 깨질 경우 해결 방법 (get, post) (0) | 2018.04.20 |
[Java] Mac에서 MySQL 설치(+workbench) 및 eclipse 연결하기 (4) | 2018.04.16 |
[Java] Mac에서 아파치 톰캣 설치, 설정하기 (0) | 2018.04.16 |
[Java] mac에서 Eclipse 설치하기 (0) | 2018.04.14 |