7. log4j, config 경로 설정

홍준성·2022년 7월 22일
0

MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다.
따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?'로 치환되어 처리된다.
복잡한 SQL의 경우 '?'로 나오는 값이 제대로 되었는지 확인하기가 쉽지 않고,
실행된 SQL의 내용을 정확히 확인하기 어렵기 때문에 log4jdbc-log4j2라이브러리
사용하여 어떤 값인지 정확하게 확인한다.

log4j

  1. src/main/resources 경로에 Untitled Text File 만들기

아래 명령어 넣고 저장
저장 이름: log4jdbc.log4j2.properties

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
  1. root-context.xml 설정 수정
    (1) src - main - webapp - WEB-INF - spring - root-context.xml 클릭
    (2) 설정 수정
아래 명령어 주석 처리
<!--  <property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver"/>
<property name = "jdbcUrl" value = "jdbc:oracle:thin:@localhost:1521:XE"/>-->

새 명령어 추가 
<property name = "driverClassName" value = "net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name = "jdbcUrl" value = "jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"/>
  1. 로거 간략하게 보기
    (1) src/main/resources - log4j.xml 클릭
    (2) 아래 명령어 위에 추가
audit, resultset, connection할 때 경고일 때만 출력하라는 명령어
	<logger name="jdbc.audit">
		<level value="warn"/>
	</logger>
	<logger name="jdbc.resultset">
		<level value="warn"/>
	</logger>
	<logger name="jdbc.connection">
		<level value="warn"/>
	</logger>

config

  1. TimeMapper, config 경로 수정
    (1) src - main - webapp - WEB-INF - spring - root-context.xml 클릭
    (2) 아래 명령어 sqlSessionFactory 부분에 추가
// mappers 안에 어떤 경로든 Mapper.xml이라는 이름이 들어간 경로 찾기
// mapper파일은 여러개이기 때문에 복수형으로 사용
<property name ="mapperLocations" value="classpath:mappers/**/*Mapper.xml"/>

//config - config.xml로 경로 특정하여 찾기
//config파일은 하나만 있으므로 단수로 사용
<property name="configLocation" value="classpath:config/config.xml"/>

config는 매번 경로를 모두 적어주기 힘드므로 작성해놓는 것

//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">
<configuration>
	<typeAliases>
		<typeAlias type="com.example.ex01.domain.vo.TestVO" alias="testVO"/>
	</typeAliases>
</configuration>

//config에 TestVO의 경로를 testVO로 설정해놨기 때문에, 다음부터는 굳이 경로를 다 적을 필요 없이 testVO라고만 적어도 된다.
// 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.example.ex01.mapper.TestMapper">
	<select id="getList" resultType="testVO">
		SELECT ID, NAME FROM TBL_TEST
	</select>
</mapper>
profile
준성이의 개발자 공부 velog

0개의 댓글