[ jsp ] mybatis - 설치, 설정, 연동 방법 정리 > jsp&servlet

본문 바로가기

사이트 내 전체검색

jsp&servlet

[ jsp ] mybatis - 설치, 설정, 연동 방법 정리

작성일 21-01-29 16:13

페이지 정보

작성자 웹지기 조회 6,511회 댓글 0건

본문

1) MYBatis

 - SQL Mapping Framewrok for Java

 - download - blog.mybitis.org > Procucts > SQL Mapping Framework for Java > Link ( Download : click )

 버젼에 변화가 크지 않은것으로 하기 위해

 mybatis-3.4.4로 이동 > Assets click > zip 파일 다운로드

 

 - 구조

KakaoTalk_20210201_093042867.png

 

KakaoTalk_20210201_113340560.png

 

 

mybatis 연결에는 세개의 파일이 필요하다.

 config.xml ( 환경 설정 파일 )

 db.properties ( db 설정이 들어가는 파일 )

 MemberMapper.xml ( sql이 저장되는 파일 )


압축을 풀게 되면 설명서와 .jar 파일이 있음.

연결방법은 xml 파일에서 id 를 통해서 연결하고 이 xml 파일을 매퍼 파일이라고 한다.


db정보를 가지고 있는 파일을 properties( 프로퍼티스) 파일이라고 한다.

프로퍼티스파일 만들기

File > New > file > db.properties


driver=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@127.0.0.1:1521:XE

username=hr

password=hr


File > New > xml > config.xml 

( kr/smhrd/mybatis/db.properties 이곳은 경로 )

mappers 쪽에 계속 적으로 mapper을 추가해 가면서 파일을 연결한다.

 

2) 실습파일

 https://github.com/freemaster/MVC05 

 

3) 상세설정 방법


<?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>

    <properties resource="kr/shmrd/mybitis/db.properties"/>

    //이 별칭들을 통해서 각 매퍼페이지에서 하나의 별칭씩 사용이 가능해진다.

    //kr.smhrd.model.MemberVO 를 MemberVO라는 alias 에 넣어서 사용 하는 구문

    <typeAliases>

        <typeAlias type="kr.smhrd.model.MemberVO" alias="MemberVO"/>

    </typeAliases>

    <environments default="development">

        <environment id="development">

            <transactionManager type="JDBC" />

            <dataSource type="POOLED">

                <property name="driver" value="${driver}" />

                <property name="url" value="${url}" />

                <property name="username" value="${username}" />

                <property name="password" value="${password}" />

            </dataSource>

        </environment>

    </environments>

    <mappers>

        <mapper resource="kr/shmrd/mybitis/MemberMapper.xml" />

    </mappers>

</configuration>


sql을 관리하는 것은 sqlsessionfactory

MemberDAOImpl.java

package kr.smhrd.model;


import java.io.IOException;

import java.io.InputStream;

import java.util.List;


import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class MemberDAOImpl implements MemberDAO{

    

    /* My Batis Start

     * 객체가 한번만 실행되는 것

     * 초기화 블럭 (객체를 생성할 때)

     * My Batis 

     */

    private static SqlSessionFactory sqlSessionFactory;

    

    static {

        String resource = "kr/smhrd/mybatis/config.xml";

        InputStream inputStream;

        try {

            inputStream = Resources.getResourceAsStream(resource);

            //전체 세션을 관리하는 것이 sqlSessionFactory

            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    

    @Override

    public List<MemberVO> memberList() {

        //세션정보 가져오기

        SqlSession session = sqlSessionFactory.openSession();

        //SQL문장 ( select ~ ) + MemberVO + ArrayList() 

        //List<MemberVO> list = session.selectList("kr.smhrd.mybatis.memberList"); //동일한 이름이 없을 경우 패키지는 적지 않아도 된다.

        List<MemberVO> list = session.selectList("memberList");

        //사용후 사용한 세션에 대한 반납을 실시한다.

        session.close();

        return list;

    }


    @Override

    public int memberInsert(MemberVO vo) {

        SqlSession session = sqlSessionFactory.openSession();

        int cnt = session.insert("memberInsert", vo);

        session.commit();

        session.close();

        return cnt;

    }


    @Override

    public int memberDelete(int num) {

        SqlSession session = sqlSessionFactory.openSession();

        int cnt = session.delete("memberDelete", num);

        session.commit();

        session.close();

        return cnt;

    }


    @Override

    public MemberVO memberContent(int num) {

        SqlSession session = sqlSessionFactory.openSession();

        MemberVO vo = session.selectOne("memberContent", num);

        session.close();

        return vo;

    }


    @Override

    public int memberUpdate(MemberVO vo) {

        SqlSession session = sqlSessionFactory.openSession();

        int cnt = session.update("memberUpdate", vo);

        session.commit();

        session.close();

        return cnt;

    }

}

 

 

MemberMapper.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="kr.smhrd.mybatis.MemberMapper">

    <select id="memberList" resultType="MemberVO">

        SELECT * FROM memiot 

        ORDER BY NUM DESC

    </select>

    <insert id="memberInsert" parameterType="MemberVO">

         INSERT INTO memiot 

         VALUES 

         (num_seq.nextval, #{id}, #{pass}, #{mname}, #{mage}, #{memail}, #{mtel})

    </insert>

    <delete id="memberDelete" parameterType="Integer">

         DELETE FROM memiot 

         WHERE 

         num=#{num}

    </delete>

    <select id="memberContent" resultType="MemberVO" parameterType="Integer">

        SELECT * FROM memiot 

        WHERE

        num=#{num}

    </select>

    <update id="memberUpdate" parameterType="MemberVO">

         UPDATE memiot 

         SET 

         mage=#{mage}, memail=#{memail}, mtel=#{mtel}

         WHERE 

         num=#{num}

    </update>

    

 

</mapper>

 


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 24건 1 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기