포스트 목록

2017년 8월 8일 화요일

Spring boot와 MyBatis

기존 Spring Project에서 MyBatis사용이 비교적 익숙해져 있었다.
하지만 이번 개인프로젝트에 Spring boot를 적용하면서 기존의 방법과는 조금 다르게 설정을 해야한다는 것을 알았다. 이에 설정 내용을 남긴다.

--------------------------------------------------------------------------------------------

1. 프로젝트 구조
2. pom.xml
3. application.properties
4. mybatis-config.xml
5. mapper.xml
6. Dao

1. 프로젝트 구조
    프로젝트는 Maven으로 구성되어 있으며, 다음의 구조를 갖는다.



    

2. pom.xml
    - mybatis에서는 spring boot와의 연계를 위해 기존의 방법을 제외한 다른 방법을 제안하고 있다. (http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure)

    - MyBatis와의 연결은 하나의 dependency만 추가해주면 된다.

<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

3. application.properties
    - Datasource에 대한 정보는 appication.properties에 작성한다. spring boot에서는 자동으로 Datasource를 생성하여 데이터를 주입한다.


#Datasource
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://222.238.108.219:13306/[DB_NAME]
spring.datasource.username=[USERNAME]
spring.datasource.password=[PASSWORD]

#MyBatis
mybatis.config-location=classpath:config/mybatis-config.xml

4. mybatis-config.xml
    - src/main/resources에 config폴더를 만들고 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>

	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
	
	<typeAliases>
		<typeAlias alias="member" type="net.ju.blog.mvc.member.domain.Member"/>
	</typeAliases>
	
	<mappers>
		<mapper resource="mappers/member.xml"/>
	</mappers>

</configuration>

5. member.xml
    - src/main/resoources에 mapper폴더를 만들고 각 도메인(or VO, DTO) 클래스에 해당하는 이름의 xml(mapper라고 부른다)를 만든다.


<?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="member">

	<select id="selectMemberId" parameterType="member" resultType="_int">
	
		SELECT
			COUNT(*)
		FROM
			member
		WHERE
			member_id = #{memberId}
	
	</select>
	
</mapper>

6. Dao
    - Dao는 기존의 것과 다르지 않다.


@Repository
public class MemberDao {
	
	@Autowired
	private SqlSession sqlSession;
	
	public int selectMemberId(Member member) {
		
		return sqlSession.selectOne("member.selectMemberId", member);
	}
}

댓글 없음:

댓글 쓰기