스프링 - Oracle TimeMapper 예제
목차
[Coding/스프링(Spring) Framework] - MAC / Windows 이클립스 스프링, 오라클 연동, 마이바티스, log4jdbc 라이브러리 사용하기
[Coding/스프링(Spring) Framework] - 스프링 - Oracle TimeMapper 예제
log4jdbc-log4j2 라이브러리 사용하기
TimeMapper 예제
com.koreait.mapper
package com.koreait.mapper;
import org.apache.ibatis.annotations.Select;
public interface TimeMapper {
/*
* SQL이 복잡하거나 길어지는 경우에는 어노테이션보다는 XML을 이용하는 방식을 더 선호하게 된다.
* MyBatis-Spring의 경우 Mapper 인터페이스와 XML을 동시에 이용할 수 있다.
*/
@Select("SELECT sysdate FROM dual")
public String getTime();
// result type이 String
public String getTime2();
}
root-context.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 생성자 프로퍼티, dataSource 참조-->
<property name="mapperLocations" value="classpath:/META-INF/com/koreait/mapper/**/*.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<mybatis-spring:scan base-package="com.koreait.mapper" /> <!--추가-->
namespace 체크

적용 후 나와서 update Maven
TimeMapper.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.koreait.mapper.TimeMapper">
<select id="getTime2" resultType="string">
SELECT sysdate FROM dual
</select>
</mapper>
TimeMapperTests.java
package com.koreait.persistence;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.koreait.mapper.TimeMapper;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
//JAVA설정을 사용하는 경우
//@ContextConfiguration(classes= {RootConfig.class})
@Log4j
public class TimeMapperTests {
/*
MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 sql을 처리한다.
따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?'로 치환되어 처리된다.
복잡한 SQL의 경우 '?'로 나오는 값이 제대로 되었는 지 확인하기 쉽지 않고 실행된 SQL의
내용을 정확히 확인하기 어렵기 때문에 log4jdbc-log4j2라이브러리를 사용하여 어떤 값인지를
정확히 확인한다.
*/
@Setter(onMethod_=@Autowired)
private TimeMapper timeMapper;
// @Test
// public void testGetTime() {
// log.info("-----------getTime1 start------------");
// log.info(timeMapper.getClass().getName());
// log.info(timeMapper.getTime());
// log.info("-----------getTime1 end------------");
// }
//
@Test
public void testGetTime2() {
log.info("-----------getTime2 start------------");
log.info(timeMapper.getTime2());
log.info("-----------getTime2 end------------");
}
}
log4jdbc-log4j2 적용
MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 sql을 처리한다.
따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?'로 치환되어 처리된다.
복잡한 SQL의 경우 '?'로 나오는 값이 제대로 되었는 지 확인하기 쉽지 않고 실행된 SQL의
내용을 정확히 확인하기 어렵기 때문에 log4jdbc-log4j2라이브러리를 사용하여 어떤 값인지를
정확히 확인한다.
ID와 PW를 노출하지 않기 위해
properties를 추가한다.
파일명 src/main/resources/log4jdbc.log4j2.properties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
pom.xml
140번줄 쯤 dependecies 안에 추가
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
root-context.xml
기존 것을 아래코드와 같이 변경한다.
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1600:XE"/>
src/main/resources/log4j.xml
에서 ROOT Logger 바로 위에다 추가
<logger name="jdbc.audit">
<level value="warn" />
</logger>
<logger name="jdbc.resultset">
<level value="warn" />
</logger>
<logger name="jdbc.connectiion">
<level value="warn" />
</logger>
이클립스 콘솔에서 보기 편하게 테이블 구조로 나오게 되는 것을 확인할 수 있다.
[Coding/스프링(Spring) Framework] - 스프링 - Oracle TimeMapper 예제]
스프링 - Oracle TimeMapper 예제
TimeMapper 예제 com.koreait.mapper package com.koreait.mapper; import org.apache.ibatis.annotations.Select; public interface TimeMapper { /* * SQL이 복잡하거나 길어지는 경우에는 어노테이션보다는 XML.....
iu-corner.tistory.com
[Coding/스프링(Spring) Framework] - MAC / Windows 이클립스 스프링, 오라클 연동, 마이바티스, log4jdbc 라이브러리 사용하기
MAC / Windows 이클립스 스프링, 오라클 연동, 마이바티스, log4jdbc 라이브러리 사용하기
스프링 오라클 연동 JDBCTests.java 생성 JDBC 연결 package com.koreait.persistence; import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.DriverManager; import org.junit.Tes.....
iu-corner.tistory.com
[Coding/스프링(Spring) Framework] - MAC / Windows OS 스프링 STS 이클립스 Market Place 설치, 환경 설정
MAC / Windows OS 스프링 STS 이클립스 Market Place 설치, 환경 설정
[Coding/스프링(Spring) Framework] - 스프링 - 프레임 워크란? 특징, 장점, 라이브러리 개념 등 스프링 - 프레임 워크란? 특징, 장점, 라이브러리 개념 등 학습 목표 이 수업을 들으려면 할 줄 알아야하는...
iu-corner.tistory.com
](https://iu-corner.tistory.com/entry/MAC-Windows-OS-스프링-STS-이클립스-Market-Place-설치-환경-설정
MAC / Windows OS 스프링 STS 이클립스 Market Place 설치, 환경 설정
[Coding/스프링(Spring) Framework] - 스프링 - 프레임 워크란? 특징, 장점, 라이브러리 개념 등 스프링 - 프레임 워크란? 특징, 장점, 라이브러리 개념 등 학습 목표 이 수업을 들으려면 할 줄 알아야하는...
iu-corner.tistory.com
'⚙️ Backend > 스프링(Spring) Framework' 카테고리의 다른 글
스프링(Spring) - 예외처리, 500 오류 (@ControllerAdvice) (0) | 2021.05.10 |
---|---|
(Spring MVC) Front-Controller 패턴 (0) | 2021.05.07 |
MAC / Windows 이클립스 스프링, 오라클 연동, 마이바티스, log4jdbc 라이브러리 사용하기 (0) | 2021.05.07 |
MAC / Windows OS 스프링 STS 이클립스 Market Place 설치, 환경 설정 (0) | 2021.05.06 |
스프링 - 프레임 워크란? 특징, 장점, 라이브러리 개념 등 (0) | 2021.05.06 |
댓글