스터디/스프링
[Spring Boot]Spring Boot와 Mybatis 연결
짐배몬
2020. 10. 10. 23:15
[참조블로그]https://charlie-choi.tistory.com/218
Pom.xml 에 Mybatis Dependency 추가
<!-- mybatis 설정 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- //mybatis 설정 -->
application.properties 에서 환경설정 값 추가
#DataSource Setting
spring.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver #드라이버
spring.datasource.hikari.jdbc-url=jdbc:mysql://[host]:[port]/[schema]?[properties] #URL
spring.datasource.hikari.username=[username]
spring.datasource.hikari.password=[password]
spring.datasource.hikari.idle-timeout=300000 #자유
spring.datasource.hikari.connection-timeout=600000 #자유
DatasourceConfiguration 에서 빈생성
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
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 org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@Configuration //설정파일임을 알려주는 어노테이션
@MapperScan(basePackages = "com.saleinfo.core.*.service.impl", sqlSessionFactoryRef = "sqlSessionFactory") //메퍼를 찾는 어노테이션 Mapper 위치와, SessionFactory 이름 설정
public class DataSourceConfiguration {
@Bean(name = "dataSource") //빈생성
@ConfigurationProperties(prefix ="spring.datasource.hikari") //application.properties 에서 prefix 가 들어간 항목을 찾아서 가져옴
public DataSource DataSource(){
return new HikariDataSource(); //써본적은 없는데 커넥션 풀 성능이 뛰어나다고 한다.
}
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(
@Qualifier("dataSource") DataSource dataSource, //위에서 생성해준 dataSource 빈 가져오기
ApplicationContext applicationContext) throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); //팩토리 빈 생성
sqlSessionFactoryBean.setDataSource(dataSource); //dataSource 지정
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("sqlMapper/**/*.xml")); //src/main/resource 위치에서 sqlMapper경로 지정
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "sqlSession")
public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) throws Exception{
return new SqlSessionTemplate(sqlSessionFactory);
}
}
SQL.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.saleinfo.core.main.service.impl.MainServiceMapper">
<select id="selectTitle" resultType="String">
<![CDATA[
쿼리문
]]>
</select>
</mapper>
Mapper.java 생성
@Mapper
public interface MainServiceMapper {
String selectTitle();
}
Service.java 생성
@Service("mainService")
public class MainServiceImpl implements MainService{
@Autowired
MainServiceMapper mainServiceMapper;
@Override
public String main() {
return mainServiceMapper.selectTitle();
}
}
이후 호출하면 된다.