danDevlog

Spring - 2 (데이터베이스 연결) 본문

Spring 게시판 만들기

Spring - 2 (데이터베이스 연결)

단데기이 2022. 4. 15. 15:15
728x90

위와 같은 경로로 파일과 디렉토리를 생성함.
(패키지가 아니라 일일이 폴더로 생성하는것)

 

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">
<!-- 매칭 : 약도와 현실의 길을 일치 시키는 과정. 
쿼리문 끝에 ; 하지 않아야 함.
resultType 은 대문자 S 로 시작하지 않음. string 
이전에 문자열로 담아서 처리하는 과정과는 
비슷하면서 다름. -->
  
<mapper namespace="come.review.mapper.TimeMapper">
	<select id="getTime3" resultType="string">
		select sysdate sd2 from dual
	</select>
</mapper>

mybatis를 사용한다는 것을 DOCTYPE으로 선언해주고,

데이터베이스에서 시간을 읽어오는 마이바티스 쿼리를 적어준다.

위에서 만든 경로랑 namespace의 경로가 같아야한다 그렇지 않으면 Binding~ 오류가 발생한다.

 

xml파일들 정보

https://thiago6.tistory.com/70

 

servlet-context.xml, root-context.xml, web.xml 차이점 알기!

servlet-context.xml, root-context.xml, web.xml에 대한 차이점에 대해 정리해봅니다. 우선, xml 파일은 모두 객체(Bean)를 정의합니다. 1. servlet-contex.xml servlet에서 보듯이 요청과 관련된 객체를 정의..

thiago6.tistory.com

root-context 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring 
http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans 
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<!-- Root Context: defines shared resources visible to all other web components -->
	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<!-- <property name="driverClassName" value="oracle.jdbc.OracleDriver"> 
			</property> <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"></property> -->
		<property name="driverClassName"
			value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
		<property name="jdbcUrl"
			value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
		<property name="username" value="계정명"></property>
		<property name="password" value="비밀번호"></property>
	</bean>
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
		destroy-method="close">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
	</bean>


	<mybatis-spring:scan
		base-package="com.review.mapper" />
	<!-- 특정 패키지를 스캔하여 필용한 내용은 메모리에 업로드 -->

	<context:component-scan
		base-package="com.review.service">

	</context:component-scan>
</beans>

root-context의 namespaces탭에서 체크

 

 

src/test/java/com.review.persistence 처럼 패키지를 만들어주고

TimeMapperTests.java 생성

package com.review.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.review.mapper.TimeMapper;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class TimeMapperTests {
	@Setter(onMethod_ = @Autowired)
	private TimeMapper timeMapper;

	@Test // add Junit library	
	public void testGetTime3() {
		log.info("xml 테스트 : " + timeMapper.getTime3());
	}
//	timeMapper : 인터페이스
//	getTime3 : 메소드 선언
//	인터페이스를 implements 받아서 자식 클래스를 생성하고 메소드를 오버라이드 하는 처리를
//	스프링 컴파일러가 자동으로 처리.
//	getTime3 매칭되는 xml 파일의 mybatis 값을 읽어서 결과를 리턴

}

src/main/java 아래에

com.review.mapper  즉, 매퍼 패키지를 생성해주고 

TimeMapper.java 인터페이스 생성

package com.review.mapper;

public interface TimeMapper {
	public String getTime3();
}

 

모두 끝낸다음 

TimeMapperTest에서 JunitTest를 진행하면

데이터베이스에서 시간을 잘 가져온것을 확인

 


위에처럼 로그가 보기좋게 뜨기위해서는

Spy4LogDelegator를 이용한다.

 

pom.xml에 dependency를 추가한다.

그다음 로그 간략화하는 방법

src/test/resources 에서 log4j.xml 을 열고, application loggers 에 아래 코드 추가

 

Comments