[ jsp ] mybatis - 설치, 설정, 연동 방법 정리
페이지 정보
작성자 웹지기 댓글 0건 조회 8,699회 작성일 21-01-29 16:13본문
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 파일 다운로드
- 구조
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>
댓글목록
등록된 댓글이 없습니다.