본문 바로가기
BOOKS/Spring Boot

이클립스를 사용한spring boot mybatis 설정

by IT여행자 2021. 12. 24.
728x90
- mvc 패턴까지 내용은 https://jobtc.tistory.com/57(Spring Boot에서 MVC 초간단 설정) 참고하시고 그 이후의 작업부터 진행합니다.
- mysql은 설치되어 있어거나 계정이 있어야 합니다.
- jstl도 사용하도록 설정합니다. (샘플 코드내에서는 사용하지 않음)

 

1. dependency 추가

pom.xml에 아래의 dependency들을 추가합니다. 두 번째에 있는 mybatis-spring-boot-starter로 추가하지 않으면 mybatis가 정상적으로 인식되지 않을 수 있습니다.

<dependencies>
      … 
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>1.2</version>
	</dependency>

	<dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>2.1.4</version>
	</dependency>

	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.27</version>
	</dependency>

</dependencies>

 

2. properties 추가

resources/application.propertyes 파일에 mysql 연결 정보와 mybatis에 관한 내용을 추가합니다. 

#mysql
spring.datasource.data-source-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db명
spring.datasource.username=계정명
spring.datasource.password=계정 암호

# mybatis
mybatis.type-aliases-package=kr.jobtc.mybatis
mybatis.mapper-locations=static/mapper/*.xml

 

3. 패키지 및 폴더 생성

application.properties에 지정된 폴더를 생성합니다.

 

 

4. mapper 테스트용 인터페이스 작성

package kr.jobtc.mybatis;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface TestMapper {
	public Integer totSize(String findStr);
}

5. mapper 작성

resources/static/mapper/test.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">
<mapper namespace="kr.jobtc.mybatis.TestMapper">
	<select id="totSize" parameterType="String" resultType="Integer">
		select count(serial) totSize from board
		where mid     like '%${_parameter}%'
		or    subject like '%${_parameter}%'
		or    doc     like '%${_parameter}%'
	</select>

</mapper>

select문장은 어떤것이든 상관없습니다. 샘플 코드는 검색어로 전달된 문자열이 포함된 데이터 건수를 리턴하고 있습니다. 그러나 namespace는 Mapper interface가 있는 패키지를 사용해야 합니다.(TestMapper.java의 패키지)

 

6. Service 클래스 작성

 

package kr.jobtc.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import kr.jobtc.mybatis.TestMapper;

@Service
@Transactional
public class MybaService {
	@Autowired
	TestMapper mapper;
	
	@Autowired
	PlatformTransactionManager manager;
	
	public int totSize(String str) {
		
		TransactionStatus status = 
				manager.getTransaction(new DefaultTransactionDefinition());
		int totSize =0;
		try {
			totSize = mapper.totSize("");
			
			//manager.commit(status);
			//manager.rollback(status);
			
		}catch(Exception ex) {
			ex.printStackTrace();
		}
		return totSize;
	}
	
}

* 트랜젝션이 필요없는 로직이지만 트랜젝션 부분을 한번 작성해 봅니다.

 

7. Controller 작성

 

package kr.jobtc.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import kr.jobtc.mybatis.TestMapper;
import kr.jobtc.service.MybaService;

@RestController
public class MvcTestController {

	@Autowired
	MybaService service;
	
	@RequestMapping("/myba")
	public ModelAndView myba() {
		ModelAndView mv = new ModelAndView();
		int totSize = service.totSize("");
		
		mv.addObject("totSize", totSize);
		mv.setViewName("myba_result");
		return mv;
	}
}

 

8. view 작성

 

webapp/WEB-INF/view/myba_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
건 수 : ${totSize }
</body>
</html>

 

9. 테스트

 

출력된 건수는 각자 다르겠지요~

 

이렇게 해서 간단하게 mybatis를 spring boot에서 처리할 수 있는 샘플 작업을 마무리 지었습니다.

 

이상 it여행자였습니다.

 

 

 

 

'BOOKS > Spring Boot' 카테고리의 다른 글

spring에서 사용하는 주요 Annotation  (0) 2022.07.14
Spring Boot에서 WebSocket 만들기  (4) 2022.01.02
Spring Boot에서 MVC 초간단 설정  (0) 2021.12.24