KoreaIt Academy/Spring Boot

[Spring Boot] MyBatis 설정 (hikari cp), 사용법

hongeeii 2021. 10. 8.
728x90
반응형

application.properties

#server port
server.port=10003

#JDBC spy datasource
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
spring.datasource.hikari.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.hikari.jdbc-url=jdbc:log4jdbc:oracle:thin:@localhost:1522:XE
spring.datasource.hikari.username=hr
spring.datasource.hikari.password=hr

 

 

----java폴더 안에 mybatis패키지를 만든후,  MyBatisConfig.java 파일을 만듭니다.---

 

MyBatisConfig.java

package com.example.board.mybatis;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.io.IOException;

@Configuration
@MapperScan("com.example.board.mappers")
@RequiredArgsConstructor
public class MyBatisConfig {


private final ApplicationContext applicationContext;

@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig(){ return new HikariConfig(); }

@Bean
public DataSource dataSource(){ return new HikariDataSource(hikariConfig()); }

@Bean
public SqlSessionFactory sqlSessionFactory() throws IOException {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath*:/mappers/*.xml"));
sqlSessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:/config/MyBatisConfig.xml"));
try {
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);
return sqlSessionFactory;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

 

 

 

----java폴더 안에 mapper패키지를 만든후,  mapperNmae.java 파일을 만듭니다.---

mapperName.java

@Mapper 어노테이션으로 마이바티스 연결 등록을 합니다.

인터페이스 이름은 xml의 mapper(nameSpace 이름과 동일하게 해야합니다.)

 

mapper.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="com.example.ex01.mapper.TimeMapper">
<select id="getTime" resultType="string">
/*주석은 이렇게*/
SELECT SYSDATE FROM DUAL
</select>
</mapper>

 

 

<!--
PK값을 미리 SQL을 통해서 처리해 두고 지정한 이름으로 결과를 보관하는 방식이다.
SQL을 한 번 더 실행하는 부담이 있기는 하지만 자동으로 추가되는 PK값을 확인해야 하는 상황에서는
유용하게 사용될 수 있다.
-->
<insert id="insertSelectKey_bno">
/*태그 안에서는 이와 같은 주석으로 사용해야 한다.*/
/*게시글 등록 전 다음 시퀀스를 가져와서 insertSelectKey_bno메소드의 매개변수로 매핑후 전달한다.*/
<selectKey keyProperty="bno" order="BEFORE" resultType="long">
SELECT SEQ_TBL_BOARD.NEXTVAL FROM DUAL
</selectKey>
/*위에서 전달받은 bno를 사용한다.*/
INSERT INTO TBL_BOARD(bno, title, content, writer)
VALUES(#{bno},#{title},#{content},#{writer})
</insert>

 

 

 

단위 테스트

728x90
반응형

추천 글