이전에 정리한 내용은
java config 내용과 xml 내용이 혼재되어 있어서 아래의 내용으로 다시작성함
두가지 방법을 섞어서 작성해놨다 보니 혼동이 옴,
결정적으로 swagger를 정상적으로 실행하지 못하는 이슈가 발생하였음
https://github.com/springfox/springfox/issues/1595
https://ayoteralab.tistory.com/entry/Spring-Boot-10-mybatis-camelCase-%EC%A0%81%EC%9A%A9
=================================================================================================================
dependencies {
.......................
//mybatis 사용을 위해 추가
compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
compile 'org.springframework.boot:spring-boot-starter-jdbc'
compile 'mysql:mysql-connector-java'
}
=================================================================================================================
spring :
session :
timeout: 600
datasource:
##로그 없이 작동 - 개발 MYSQL
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/stock?serverTimezone=UTC&characterEncoding=UTF-8
=================================================================================================================
package com.sungchul.stock.config;
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.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(value={"com.sungchul.stock.**.*"})
public class MyBatisConfig {
@Autowired
ApplicationContext applicationContext;
@Bean
public SqlSessionFactory sqlSessionFactory (DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*Mapper.xml"));
sqlSessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));
sqlSessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return sqlSessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSession (SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
=================================================================================================================
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">
<!--mapUnderscoreToCamelCase : 스네이크 카멜 변환 -->
<!--callSettersOnNulls : 쿼리 결과 필드가 null인 경우, 누락이 되서 나오는데 누락이 안되게 하는 설정-->
<!--jdbcTypeForNull : 쿼리에 보내는 파라메터가 null인 경우, 오류 발생하는 것 방지 예) ##{search.user}-->
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="callSettersOnNulls" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
</configuration>
=================================================================================================================
ParsingMapper.java
=================================================================================================================
package com.sungchul.stock.parsing;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface ParsingMapper {
}
=================================================================================================================
=================================================================================================================
<?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.sungchul.stock.parsing.ParsingMapper"><!--namespace를 통해 UserDAO와 연결합니다. -->
</mapper>
=================================================================================================================
2021-11-10 추가
##################################################################################################################
해당 파일로 설정을 사용할때는
MyBatisConfig.java 클래스에서 적용한 아래의 부분을 주석처리하고
sqlSessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));
yml 파일에 아래와 같이 작성 (config-location 이내용을 기재하면 안됨)
=================================================================================================================
mybatis:
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
jdbc-type-for-null: null
=================================================================================================================
위와 같이 설정하면 "mybatis-config.xml" 파일은 더이상 사용하지 않음