728x90
0. summary_설정
- library 받기
- root-context에서 libaray로 부터 받은 2가지 1) sqlSessionFactory 2) sqlSession 의 설정을 해준다.
- sqlSessionFactory
- dataSource: bean으로 등록된 dataSource를 myBatis에게 전달
- configLocation: myBatis의 내부 설정 파일 등록
- mapperLocations: myBatis는 repository인 DAO와 sqlQuery인 mapper를 따로 분리 해서 사용하는데 그 중 mapper의 위치를 지정하는 설정
- sqlSession
- repository Dao에서 sqlSession의 method를 이용해서 mapper의 sqlQuery를 사용한다.
- repository Dao에서 sqlSession의 method를 이용해서 mapper의 sqlQuery를 사용한다.
- sqlSessionFactory
- 2.1.2의 configLocation 내부 설정 파일
- 경로 : resources/ 에 작성 - java 파일이아닌 설정인 xml 파일이므로
- 별명 : 기본형을 제외한 dto 객체를 사용하려면 해당 객체의 class의 경로를 다 써줘야하지만 별명을 통해서 dto의 class명만 작성 가능
1. sourceCode_설정
- pom.xml
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
</dependencies>
- root-context
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
...
</bean>
<!-- 여러개발자가 막 건들이는 것은 자동등록 -->
<!-- myBatis 2가지 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven/>
<context:component-scan base-package="com.fastcampus"/>
</beans>
- mybatis-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 alias="BoardDto" type="com.fastcampus.domain.BoardDto"/>
</typeAliases>
</configuration>
2. summary_작동코드
- 크게 3박자
- BoardDto.java : db의 값을 객체로 받을 class
- BoardDaoImpl.java
- db와의 연결통로중 java logic만 깔끔하게 존재
- SqlSession을 주입받아서 .xml에서 query문을 수행
- boardMapper.xml
- sqlSessionFactory에서 지정한 위치에 mapper.xml을 넣어야한다.
- BoardDto.java : db의 값을 객체로 받을 class
- 분리된 파일들끼리 연결하는 방법( ==규칙)
- BoardDaoImpl.java
- session의 경로
- params : mapper의 namespace + mapper의 id명, 넘겨줄 값(model처럼 생각하면 된다)
- params : mapper의 namespace + mapper의 id명
- session의 경로
- boardMapper.xml
- <mapper namespace: 나를 나타내는 이름>
- 보통 해당 파일의 경로로 이름을 지정하지만 아무 이름으로 해도된다.
- 다만, 아무 이름으로 한 걸 BoardDaoImpl.java 의 session method의 params의 nameSpace에 동일한 이름으로 작성만 하면된다.
- <select id="select" parameterType="int" resultType="BoardDto">
- id = BoardDaoImpl.java 의 session method의 params의 id명
- parameterType = 기본형도 되고 객체도 가능. BoardDaoImpl에서 넘겨줄 값의 type을 작성하고 해당 값을 query문에서 사용할 때 #{} BoardDaoImpl에서 넘겨줄 값의 type의 변수명
- resultType = BoardDaoImpl에서 받아낼 반환 타입, 기본형이 아닌 객체일 경우 별명을 지정하지 않을 경우 해당 객체의 경로도 정확히 작성 필요
- id = BoardDaoImpl.java 의 session method의 params의 id명
- <mapper namespace: 나를 나타내는 이름>
- BoardDaoImpl.java