일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 별 찍기
- 오라클
- 백준문제
- 티스토리 블로그
- 오류모음
- 백준
- 전화번호부
- 파워서플라이
- 환경설정
- 공부
- spring
- 백준문제풀이
- jsp
- while
- 깃허브 블로그
- 이클립스단축기
- 이클립스
- 인터페이스
- ORA-01407
- for문
- 오류
- 자바
- 설정
- 순환문
- 스프링
- MSI
- ORA-02292
- Ajax
- Oracle
- 무결성 제약조건
- Today
- Total
danDevlog
Spring - 2 (데이터베이스 연결) 본문
위와 같은 경로로 파일과 디렉토리를 생성함.
(패키지가 아니라 일일이 폴더로 생성하는것)
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 에 아래 코드 추가
'Spring 게시판 만들기' 카테고리의 다른 글
Spring - 6 (확인창 / 페이징처리) (0) | 2022.04.18 |
---|---|
Spring - 5 (View - register, modify, get) (0) | 2022.04.17 |
Spring - 4 (View구현 - list) (0) | 2022.04.17 |
Spring - 3 (테이블 생성 / CRUD 테스트 / Service구현) (0) | 2022.04.15 |
Spring - 1 (프로젝트 생성 / pom.xml 세팅) (0) | 2022.04.15 |