본문 바로가기

Java & JSP

[JSP] JSP에 MyBatis 연결하기

728x90
반응형

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 파일을 눌러서 다운받는다.

mybatis-3.1.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





728x90
반응형