MyBatis in Spring Boot
기존 스프링에서는 mybatis, mybatis-spring, spring-jdbc가 필요 했지만,
Spring Boot 에선 Mybatis-spring-boot-start를 이용하면 자동 설정 된다.
build_gradle에 mybatis-spring-boot-starter 라이브러리 추가
//Mybatis
// https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
application-properties에 마이바티스 관련 설정 추가
##########마이바티스 관련 설정############
##매퍼xml의 위치 - classpath:/리소스 폴더의 하위를 나타냄
mybatis.mapper-locations=classpath:/mapper/*.xml
##단축명으로 사용할 클래스의 패키지명
mybatis.type-aliases-package=com.simple.basic.command
Spring Boot에서는 매퍼를 인식하려면 @Mapper어노테이션을 필수로 작성해 줘야한다
package com.simple.basic.mapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TestMapper {
}
TestMapper.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.simple.basic.mapper.TestMapper">
<select id="getTime" resultType="String">
select now()
</select>
</mapper>
Test클래스 생성
@SpringBootTest
public class MybatisTest {
@Autowired
TestMapper testMapper;
@Test
public void testCode01() {
System.out.println(testMapper.getTime());
}
}
SQL문 실행 로그 기능 더하기
SQL이 복잡해지면 구문적 에러를 찾기가 힘듭니다.
SQL로그를 출력 해두면 개발 환경에서 SQL을 사용하기 용이합니다.
아래 블로그 참고
https://huelet.tistory.com/entry/Spring-boot-SQL-%EB%A1%9C%EA%B7%B8-%EC%84%A4%EC%A0%95Log4j2
Spring boot SQL 로그 설정(Log4j2)
콘솔창에서 쉽게 쿼리와 결과를 확인하고 싶을때. 보통 log4j를 많이 사용한다. 따라서 Spring boot 사용시 log4j 설정법을 기록해 둔다. Maven dependency 추가 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 DataC
huelet.tistory.com
1. dependency 추가
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
2. Database config 변경
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
spring.datasource.username=spring
spring.datasource.password=spring
3. log4jdbc.log4j2.properties 생성 (resource폴더 아래)
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
공백이 들어있을 경우 적용이 안되므로 주의해서 입력할 것
4. logback.xml 설정 (resources폴더 아래)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF" />
<logger name="jdbc.sqlonly" level="OFF" />
<logger name="jdbc.sqltiming" level="DEBUG" />
<logger name="jdbc.audit" level="OFF" />
<logger name="jdbc.resultset" level="OFF" />
<logger name="jdbc.resultsettable" level="DEBUG" />
<logger name="jdbc.connection" level="OFF" />
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
옵션설명
- jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
- jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
- jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다.
- jdbc.resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남긴다.
- jdbc.resultsettable : SQL 결과 조회된 데이터의 table을 로그로 남긴다.
이후 실행하면
이렇게 사용한 쿼리문을 로그로 찍어준다
'Spring Boot' 카테고리의 다른 글
Upload in Spring Boot (2) | 2023.02.21 |
---|---|
Rest API (1) | 2023.02.16 |
Spring Boot Valiadation (0) | 2023.02.14 |
Thymeleaf in Spring Boot (0) | 2023.02.13 |
Spring Boot Lombok으로 Builder패턴 만들기 (0) | 2023.02.13 |
댓글