- Goal
spring boot+ gradle + mybatis 연동
- Time
20min
- Enviroment
springboot1.4 , java 1.8, gradle,
- Tutorial
build.gradle에 라이브러리 추가
1 | compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1") | cs |
mapper interface 추가
1 2 3 4 5 | @Mapper public interface HistroyMapper { @Select("SELECT * FROM HISTORY WHERE SEQ= ${seq}") List<History> selectHistory(String seq); } | cs |
controller에서 사용
1 2 3 4 5 6 7 8 | @Autowired private HistroyMapper historyMapper; @RequestMapping("/mybatis-mapping") @ResponseBody public List<History> mybatisMapping(){ return historyMapper.selectHistory("19"); } | cs |
해당 url 호출하여 결과 확인
물론 간단한 쿼리에 경우 위와 같이 작성할 수 있지만, 복잡한 쿼리에 경우 xml로 작성하는것이 편하다.
xml로 작성하기 위한 방법
dao class를 작성한다.
HistoryDao.java
1 2 3 4 5 6 7 8 9 | @Component public class HistoryDao { @Autowired private SqlSession sqlSession; public List<HashMap> selectHistoryBySeq(String seq){ return this.sqlSession.selectList("selectHistoryBySeq",seq); } } | cs |
src/main/resources/ 폴더 밑에 mapper package 생성 후 HistoryMapper.xml 파일 생성
HistoryMapper.xml
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 | <?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="com.beans9.web.dao.HistoryDao"> <select id="selectHistoryBySeq" parameterType="string" resultType="hashmap"> select b.date, b.type1 + b.type2 + b.type3 + b.type4 + b.type5 total, b.type1, b.type2, b.type3, b.type4, b.type5 from ( select a.date ,ifnull(max(case when a.type = 1 then a.cnt end),0) as type1 ,ifnull(max(case when a.type = 2 then a.cnt end),0) as type2 ,ifnull(max(case when a.type = 3 then a.cnt end),0) as type3 ,ifnull(max(case when a.type = 4 then a.cnt end),0) as type4 ,ifnull(max(case when a.type = 5 then a.cnt end),0) as type5 from ( select substr(date,1,10) date,type,count(1) as cnt from history group by substr(date,1,10),type ) a group by date )b </select> </mapper> | cs |
- 이런식에 복잡한 쿼리를 jpa로 하려면...........(물론 방법은 있겠지요.. -_- )
application.properties와 동일 위치에 mybatis-config.xml 파일 생성
mybatis-config.xml
1 2 3 4 5 6 7 8 9 10 11 12 | <?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> <package name="com.beans9.web.model"/> </typeAliases> <mappers> <mapper resource="mapper/HistoryMapper.xml"/> </mappers> </configuration> | cs |
model 위치와 mapper 파일 위치를 맞춰서 작성해 준다.
application.properties에서 mybatis-config.xml 파일 위치 설정
1 | mybatis.config=classpath:mybatis-config.xml | cs |
예제 github를 보면 아래와 같이 적혀 있는데 실제로 그렇게 작성하면 파일을 찾지 못하고 에러가 난다.
(위와 같이 적어줘야 정상동작)
1 | mybatis.config-location=mybatis-config.xml | cs |
controller에서의 사용
1 2 3 4 5 6 7 8 | @Autowired private HistoryDao historyDao; @RequestMapping("/mybatis-mapping1") @ResponseBody public List<HashMap> mybatisMapping1(){ return historyDao.selectHistoryBySeq("6"); } | cs |
해당 url 호출하여 결과 확인
폴더 구조 및 파일 위치.
생각보다 간단한 설정만으로 mybatis 사용이 가능해졌다.
아래 github를 참조하시면 좋을듯 하다.
https://github.com/mybatis/spring-boot-starter
'Programming > Springboot' 카테고리의 다른 글
[springboot] sts로 springboot + gradle + thymeleaf 프로젝트 만들기 (0) | 2016.11.14 |
---|---|
[springboot] 모바일,웹,테블릿 페이지 분리하기 (0) | 2016.10.26 |
[springboot] gradle war deploy 배포 (0) | 2016.09.23 |
[SpringBoot] JPA를 이용한 CRUD#2 (MySql, Jsp) (2) | 2016.05.17 |
[SpringBoot] JPA를 이용한 CRUD (1) | 2016.05.16 |