사용자가 책 제목을 입력하면 Mysql테이블에 책이 저장되는 로직을 만듦으로써 Spring Boot 프로젝트에서 Mybatis로 Mysql을 연동하는 법을 알아보겠습니다.
1. porm.xml에 mybatis 와 mysql커넥터 그리고 jdbc 의존성을 추가하여줍니다.
#porm.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
|
cs |
2. application.properties 파일에 mysql주소와 사용자이름,비밀번호,mybatis mapper-location 경로를 지정해줍니다.
#application.properties
1
2
3
4
5
|
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=mysql
mybatis.mapper-locations=mappers/**/*.xml
|
cs |
3. repository에서 @Mapper어노테이션을 사용할 수 있도록 아래 코드와 같이 MainApplication클래스에서 @MapperScan 어노테이션을 사용하여줍니다.
#MybatisTestApplication.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package com.example.MybatisTest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@MapperScan(basePackageClasses = MybatisTestApplication.class)
@SpringBootApplication
public class MybatisTestApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisTestApplication.class, args);
}
}
|
cs |
4. repository패키지를 만들고 그 안에 Mapper인터페이스를 생성한뒤 책을 저장할수있는 메서드를 정의해줍니다.
#IBookMapper.java
1
2
3
4
5
6
7
8
9
10
11
|
package com.example.MybatisTest.repository;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IBookMapper {
//책 저장
public void insert(String book);
}
|
cs |
5. application.properties 파일에 mybatis.mapper-locations을 mappers/**/*.xml로 지정하여 주었기 때문에 src/main/resources/ 이 경로에 mappers폴더를 생성하여주고 그곳에 BookMapper.xml파일을 생성하여줍니다.
mapper태그의 namespace속성값은 Mapper인터페이스를 생성한 경로로 지정해주어야 생성한 Mapper인터페이스를 implements 할수있게됩니다. 그리고 SQL Query와 같이 삽입할려면 insert태그, 수정할려면 update태그, 삭제할려면 delete태그, 조회할려면 select태그를 사용해주어야 합니다.
#BookMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?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.example.MybatisTest.repository.IBookMapper">
<insert id="insert">
insert into mybatis(book)
values(#{book});
</insert>
</mapper>
|
cs |
▶ service부분은 앞서 구현했던 Mapper인터페이스와 로직이 동일하기때문에 설명하는건 생략하고 controller로 넘어가겠습니다 |
6. Controller에서 사용자에게 입력받은 책제목을 DB테이블에 저장하기위해 service로 넘겨주는 로직을 작성하여줍니다.
#BookController
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
|
package com.example.MybatisTest.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.MybatisTest.service.BookService;
@Controller
public class BookController {
@Autowired
BookService service;
@GetMapping("/insert")
public String insert() {
return "DbTest";
}
@PostMapping("/insert2")
public void insertt(String book) {
service.insert(book);
}
}
|
cs |
7. 사용자 입장에서 첵 제목을 입력하였을때 정상적으로 DB테이블에 첵제목이 저장되는것을 확인할 수 있습니다.
(1) 책 제목 입력
(2) Mysql테이블에 저장확인
'Spring Framework' 카테고리의 다른 글
[Spring Boot] REST-API 공통 에러(Exception) 처리 개발 과정 (0) | 2023.03.17 |
---|---|
[Spring Boot] REST-API 공통 Response 값 포맷 개발 과정 (0) | 2023.03.15 |
(Spring,JSP) JSP에서 날짜 값을 fmt태그를 사용해 포맷하는법 (0) | 2021.09.24 |
(Spring)Postman를 사용해서 Spring으로 구축한 REST API 서버가 정상작동하는지 테스트 하는 방법 (0) | 2021.09.20 |
Spring Boot에서 JSP 연동(사용)하는 방법 (0) | 2021.09.19 |