MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다.
따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?'로 치환되어서 처리된다.
SQL을 변환해서 PreparedStatement에 사용된 '?'r가 어떤 값으로 처리되었는지 확인하는 기능을 추가해야 한다.
1. 먼저 Maven Repository에 접속해서 bgee를 검색 후 pom.xml에 추가한다.
https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
2. 프로젝트에서 로그 설정 파일을 추가한다.
MySql의 경우 아래와 같이 한 줄만 추가하면 되지만,
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
MariaDB 사용 시 properties 파일에 아래와 같이 한 줄을 더 추가한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver
3. root-context.xml 내부의 JDBC 연결 정보를 수정한다.
[수정 전]
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver"></property>
<property name="url" value="jdbc:mariadb://localhost:3306/springbasic?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="testid"></property>
<property name="password" value="t1234"></property>
</bean>
[수정 후]
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="url" value="jdbc:log4jdbc:mariadb://localhost:3306/springbasic?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="testid"></property>
<property name="password" value="t1234"></property>
</bean>
4. 프로젝트에 logback.xml 파일을 추가한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!-- log4jdbc-log4j2 -->
<logger name="jdbc.sqlonly" level="INFO"/>
<logger name="jdbc.sqltiming" level="INFO"/>
<logger name="jdbc.audit" level="WARN"/>
<logger name="jdbc.resultset" level="INFO"/>
<logger name="jdbc.resultsettable" level="INFO"/>
<logger name="jdbc.connection" level="INFO"/>
</configuration>
5. Test를 실행해보면 다음과 같이 쿼리 문과 select 결과를 확인할 수 있다.
'WEB > spring' 카테고리의 다른 글
[Spring] 에러: web.xml (A field of identity constraint 'web-app-servlet-name-uniqueness' matched element 'web-app', but this element does not have a simple type.) - 해결 방법 (0) | 2022.06.29 |
---|---|
[Spring] Junit4를 이용해 테스트하기 (0) | 2022.06.27 |
[Spring] @Transactional (0) | 2022.06.22 |
[Spring] Controller, Service, DAO, DTO (0) | 2022.06.21 |
[Spring] AOP 개념 및 라이브러리 설치 (0) | 2022.06.17 |
댓글