Java/Spring MVC

mybatis-context.xml, xml 파일 적용(pom.xml설정 후 mybatis,mybatis-spring이 제대로 올라왔는지 확인하기)

우롱차 2020. 9. 8. 21:06
728x90

(SpMVC_My_Memo)원격수업때 한 프로젝트 확인

appSvelt 폴더에서 만들어준다.

bean configuration 파일은 바로 finish를 누르면 안됌!

next를 눌러준다.

 

이 4개를 클릭해준다.

 

그리고 다시 클릭후 각 체크한 항목들마다 스크롤바를 맨 아래로 내린 후

제일 마지막 것을 체크해준다.

 

전부 제일 마지막 거를 체크해주면 된다.

그리고 finish를 눌러준다.


Namespaces에서 만들어줘도 되지만

자동완성할때 깨질 수 있기 때문에

파일 생성할때 해주는 것


mybatis-context에는

<!-- dataSource -->
<!-- sqlSessionFactory -->
<!-- sqlSessionTemplate -->

이 세가지가 들어가야 한다.

이 셋의 관계는 데이터 소스에서 설정된 bean이 

팩토리로 주입이되고 팩토리에서 설정된 bean이

템플릿으로 주입이 되는 형태이다.

 

템플릿도 우리가 사용하는게 아니라

dao에 있는 mapper에 의해서만 자동으로 설정된다 하는 것

dataSource에 BasicData만 입력 한 후 ctrl + space bar를 하면 제일 첫번째 나오는 친구 클릭

SqlSessionFactory에서는 class 이름을 SqlSession으로 쓰고 ctrl + space bar를 해준다.

그리고 SqlSessionFactoryBean을 찾아 준다.

Template도 마찬가지로 SqlSession이라 적고 ctrl + space bar

그리고 SqlSession Temlate을 선택 해준다.

 

여기에서 id는 내가 마음대로 지정하는 것

템플릿은 지정안해줘도 된다.

 

데이터 소스를 주입해주기 위해 팩토리 안에다가 property라는 태그를 추가 해주었다.

data만 적고 ctrl + space bar를 눌러서 데이터 소스 선택 해준다.

 

ref사이에 아무것도 적지 않고 ctrl + space bar를 해주면 내가 만들어 놓은게 보인다!

이렇게 해놓으면 dataSource가 sqlSessionFactory에 자동으로 주입이 되는 것임

 

Template은 property라는 태그가아니라 

constructor이라는 태그를 사용한다.

(construct까지 입력하고 ctrl + space bar를 해주면 생김)

그리고 ref를 클릭 해주고 한번 더 ctrl + space bar 해주면 sqlSessionFactory가 생김

 

가장 기본적인 구조 형태

이렇게 해주면 서로 연결 해주는 것

 

이런 형태가 Sp 프로젝트의 가장 큰 특징

서로 필요한 곳에 주입이 된다해서 DI라고 한다

Dependency Injection

전통적인 방법과 다르게 컨테이너가 만들어놓고 내가 필요한걸 불러 사용한다해서

IOC라고도 부른다.


property태그는 셀프 클로징

name안에 있는것들은 전부 ctrl+space bar 가 가능하다

 

나머지 value안에 있는 것들은 타이핑

 

driverClassName은 아래 사진 참조

OracleDriver를 작성 한 후 두번째 것 선택

 

<sqlSessionFactory>

property 두개 생성 후 셀프 클로징

mapper라 작성 한 후 ctrl + space bar

이렇게 생성 된다.

 

config 작성 후 configLocation 선택

<!-- mapperLocations : mapper.xml 파일이 있을 곳 지정(위치 지정) -->
<!-- configLocation : mybatis-config.xml 파일을 지정 -->

그리고 하나 더 해줄 건데 얘는 하나밖에 없어서

<mybatis하고 ctrl + space bar를 해주면 태그가 생긴다.

 

 

저기를 지정해주기 위해

spring폴더 아래에 mybatis라는 폴더를 생성 해주고

그 mybatis안에다가 mapper라는 폴더를 생성한다. 

 

그리고 mapperLocations에 value를 또 적을 건데

방금 만든 폴더를 copy qulified name해서 가지고 온 후 /WEB-INF/앞에 있는 코드들은 지워준다.

mapper폴더 아래에 많은 mapper.xml파일을 만들 것을 생각해서

*-mapper.xml이라고 지정

mapper.xml파일을 일일이 지정하지 않아도 되고

파일이 하나도 없을 때도 그냥 무시하고 프로젝트를 실행하는 장점이 있다.

Dao인터페이스에 아무것도 적지 않을거지만 생성한 이유는

패키지를 지정하기 위함이다.


mybatis-config.xml파일은 mybatis 폴더 안에 생성

선생님의 깃허브 참조해서 가져옴

<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>
	
	<typeAliases>
		<typeAlias 
			type="com.biz.dbms.persistence.BBsDTO" 
			alias="BBsDTO"/>
	</typeAliases>

// type, alias는 변경 하는 것임

*-mapper.xml파일들은 mapper폴더 아래에 생성한다.

 

mapper파일 생성한 후 mybatis-context.xml 파일로 넘어와서 copy qualified 해준다

얘는 파일 지정이기 때문에 건들지 않는다.

 

>>SpringMVC_Example/SpMVC_My_Memo/

 


SqlSessionTemplate 대신에 사용 할 것

<tx:annotation-driven/>
<!-- 이 id는 규칙이 정해져있다! 마지막 뒤에 단어 두개 가져오고 앞단어 소문자로 변경
SqlSessionTemplate의 할일을 대신해주면서 트랜잭션 관리해줄 친구-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="ds"/>
</bean>

 

728x90