본문 바로가기
Spring

[스프링Legacy] Mybatis 프레임워크 초기설정

by 코플+ 2023. 6. 1.

1. db계정 생성

// DB서버 접속
sqlplus sys/java@localhost:1521 as sysdba
// 계정 생성
SQL> create user dev identified by java;

사용자가 생성되었습니다.
// 권한 부여
SQL> grant connect, resource, dba to dev;

권한이 부여되었습니다.
// 생성 계정확인
SQL> select * from all_users;

 

 

2. 테이블 생성

create table board(
    board_no number(8) not null,
    title varchar2(200) not null,
    content varchar2(4000) not null,
    writer varchar2(200) not null,
    reg_date date default sysdate null,
    constraint pk_board primary key(board_no)
);

create sequence seq_board increment by 1 start with 1 nocache;

create table member(
    user_no number(8) not null,
    user_id varchar2(50) not null,
    user_pw varchar2(100) not null,
    user_naem varchar2(100) not null,
    coin number(8) default 0 null,
    reg_date date default sysdate null,
    upd_date date default sysdate null,
    enabled varchar2(10) default '1' null,
    constraint pk_member primary key(user_no)
);

create sequence seq_member increment by 1 start with 1 nocache;

create table member_auth(
    user_no number(8) not null,
    auth varchar2(50) not null,
    constraint fk_member_auth_user_no foreign key(user_no)
        references member(user_no)
);

 

3. pom.xml 메이븐 의존성

		<!-- 데이터베이스 라이브러리 의존 관계 정의시작 -->
		<!-- XML로 쿼리를 작성하게 해주는 라이브러리 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.10</version>
		</dependency>
		<!-- 스프링과 mybatis를 연동하게 해주는 라이브러리 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.4</version>
		</dependency>
		<!-- 스프링에서 JDBC(Java DataBase Connectivity) -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<!-- 
			dbcp : database connection pool  => 커넥션 객체를 미리 만들어 놓고 쓰고 반납
					미리 커넥션 객체를 여러개 ㅁ나들어 놓고 가용해야할 때 커넥션을 들고가서 사용하다가 다시 반납한다.
					최근에는 hikaripcp를 사용하는 경우도 있음
		 -->
		 <dependency>
		 	<groupId>org.apache.commons</groupId>
		 	<artifactId>commons-dbcp2</artifactId>
		 	<version>2.7.0</version>
		 </dependency>
		 <!-- 로깅을 위한 라이브러리 쿼리를 console이나 파일 로드로 볼 수 있다. -->
		 	<dependency>
		 		<groupId>org.bgee.log4jdbc-log4j2</groupId>
		 		<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
		 		<version>1.16</version>
		 	</dependency>
		 	<dependency>
		 		<groupId>com.oracle.database.jdbc</groupId>
		 		<artifactId>ojdbc8</artifactId>
		 		<version>21.1.0.0</version>
		 	</dependency>
			
		<!-- 데이터베이스 라이브러리 의존 관계 정의 끝 -->

 

 

4. root-context.xml 설정

	<!-- 
		root-context.xml : 스프링 설정을 위한 파일
		
		스프링 설정이란?
		- view와 관련되지 않은 객체를 정의
		- Service(비즈니스 기능), DAO(repository: 저장소), DB 비즈니스 로직과 관련된 설정
		- BasicDataSource dataSource = new BasicDataSource();
		  dataSource.setDriverClassName() = "oracle.jdbc.driver.OracleDriver";
		  
	 -->
	 
	 <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
	 	<property name="driverClassName" value="oracl.jdbc.driver.OracleDriver"/>
	 	<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
	 	<property name="username" value="dev"/>
	 	<property name="password" value="java"/>
	 </bean>
	
	<!-- 
		데이터베이스와 연결을 맺고 끊어질 때까지의 라이프 사이클을 관리해주는 SqlSessionTemplate 객체를 생성한다.
		1) dataSource
		2) Mapper xml의 위치 지정
	 -->
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="mapperLocations" value="classpath:/sqlmap/**/*_SQL.xml"/>
		<property name="configLocation" value="/WEB-INF/mybatisAlias/mybatisAlias.xml"/>
	</bean>
	
	<!-- 
		데이터베이스에 개발적으로 쿼리를 실행시키는 객체
		이 객체를 통해서 query를 실행한다.
	 -->
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" index="0" ref="sqlSessionFactory"/>
	</bean>
	
	<!-- 
		Mapper 인터페이스 설정
		개발자가 직접 DAO를 설정하지 않아도 자동으로 Mapper 인터페이스를 활용하는 객체를 생성하게 된다.
	 -->
	
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="kr.or.ddit.mapper"/>
	</bean>

 

 

5. mybatisAlias 파일 생성 

- root-context.xml에서 지정한 위치에 파일을 생성해준다.

- dtd 링크 주소는 마이바티스 사이트에서 받는다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<!-- 
		[마이바티스] 스프링에서 "_"를 사용한 컬럼명 사용 시(BOOK테이블의  BOOK_ID와 같은 컬럼)
		카멜케이스로 읽어주는 역할 (bookId와 같이)
		ex) 테이블 컬럼명이 member_id인 경우 jsp화면단에서 이 값을 사용시 memberId로 사용할 수 있다.
	 -->
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
	
	<!-- 자주사용하는 타입의 별칭을 셋팅 -->
	<typeAliases>
<!-- 		<typeAlias type="클래스명(패키지구조를 포함한)" alias="별칭명"/> -->
	</typeAliases>
</configuration>

 

6. blank_SQL.xml 생성

- 초기에 dummy mapper 파일을 생성해야 서버가 시작되므로 만들어준다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
<mapper namespace="blank">

</mapper>

 

7. Mapper 인터페이스 생성

- root-context.xml에서 설정한 패키지 위치에 인터페이스를 생성한다.

 

 

8. mapper.xml 수정 

- quailfied 매핑해준다.

댓글