[mybatis] 기본설정

2021. 11. 12. 18:16spring

https://mvnrepository.com >>mybatis 검색 >> 3.4.6버전 Maven 복사

 

pom.xml

project facets에서 자바version 맞추기

<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>
</dependencies>
<dependencies>
  	<!-- spring-context -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>4.3.3.RELEASE</version>
	</dependency>
	
	<!-- mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.4.6</version>
	</dependency>
	
	<!-- mybatis-spring -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>1.3.1</version>
	</dependency>
	
  	<!--  SPRING JDBC 필요 --> 
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>5.0.8.RELEASE</version>
	</dependency>

	<!-- DBCP 필요 -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
  </dependencies>

 

 한글 인코딩

WEB-INF web.xml 프로젝트 설정 파일에 한 번만 설정 (클라이언트가 입력한 값을 서버로 끌고 갈 때)

<!-- 한글 인코딩 -->
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

매 페이지마다 보여지는 한글 처리

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 


↓SqlSessionFactoryBean

package session;

import java.io.Reader;

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 SqlSessionFactoryBean {
	private static SqlSessionFactory sessionFactory = null;
	static {
		try {
			if (sessionFactory == null) {
				Reader reader = Resources.getResourceAsReader("session/mybatis-config.xml");
				sessionFactory = new SqlSessionFactoryBuilder().build(reader);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static SqlSession getSqlSessionInstance() {
		return sessionFactory.openSession();
	}
}

 

SqlSessionFactoryBean을 사용하는 방법
SqlSessionFactoryBean을 &amp;lt;bean&amp;gt;으로 처리한 후 sqlSessionTemplate으로 연결

 

sqlSessionTemplate의 객체인 mybatis에 자동주입 설정

 

↓db.properties

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:xe
jdbc.username=scott
jdbc.password=tiger

↓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>
<!-- Properties 파일 설정 -->
<properties resource='session/db.properties'/>

<!-- Alias 설정 (별칭)-->
<typeAliases>
	<typeAlias alias = "board" type="board.BoardVO" />
</typeAliases>

<!--DB 연결부분-->
 <environments default="development">
 	<environment id="development">
 	<transactionManager type="JDBC"/>
 	<dataSource type="POOLED">
 	<property name="driver" value="${jdbc.driverClassName}"/>
 	<property name="url" value="${jdbc.url}"/>
 	<property name="username" value="${jdbc.username}"/>
 	<property name="password" value="${jdbc.password}"/>
 	</dataSource>
 	</environment>
 </environments>
 
 <!-- 매퍼연결 -->
 <mappers>
 	<mapper resource="session/mappings/board-mapping.xml"/>
 	<mapper resource="session/mappings/emp-mapping.xml"/>
 </mappers>
</configuration>

 

↓board-mapping.xml 기본 형식- 이곳에 쿼리문 작성  ( mapper 엘리먼트 & namespace 설정)

<?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="BoardDAO">


	
</mapper>

↓DAO 클래스 기본형식1(SqlSession으로 DB 연결)

public class BoardDAO {
	private SqlSession sess;

	public BoardDAO() {
		sess = SqlSessionFactoryBean.getSqlSessionInstance();
	}

}

 

↓DAO 클래스 기본형식2(SqlSessionTemplate 사용)

@Repository("boardDAO")
public class BoardDAOMybatis {
	@Autowired
	private SqlSessionTemplate mybatis;
    
    }

 

프로젝트 구조(javaproject 생성&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;우클릭&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;configure&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;gt;convert to maven project)

 


 

 

**db 컬럼명과 VO클래스의 명칭이 다른 경우
[해결법] 별칭 사용하기
SELECT 
seq no,
title tname,
writer user,
FROM board

 

 

'spring' 카테고리의 다른 글

마리아DB-스프링 연동  (0) 2021.11.26
[mybatis] xml 파일에 쿼리문 작성  (0) 2021.11.12
[트랜잭션]  (0) 2021.10.08
[스프링JDBC]  (0) 2021.10.08
[AOP] 어노테이션 기반  (0) 2021.10.08