[Spring Boot] MyBatis 설정 (hikari cp), 사용법
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>
단위 테스트
'KoreaIt Academy > Spring Boot' 카테고리의 다른 글
[Spring Boot] 3-tier(티어) 아키텍처 (0) | 2021.10.08 |
---|---|
[Spring Boot] @ControllerAdvice, @ExceptionHandler을 이용한 예외처리 방법(404, 500 에러) (0) | 2021.10.08 |
[Spring Boot] Front-Controller 패턴 , Controller와 View(값을 뿌리는 방법), 타임리프(thymeleaf) 라이브러리 사용법 (0) | 2021.10.08 |
[Spring Boot] 어노테이션(Annotation, @) 정리 (0) | 2021.10.08 |
[Spring Boot] 의존성 주입(DI) (0) | 2021.10.08 |
댓글