MyBatis 연동 - eunja511005/Tutorial GitHub Wiki

Mapper

- 마이바티스(Mybais)는 Mapper 인터페이스를 제공한다.
- DAO대신 mapper를 사용하면 DAO를 만들지 않고 interface만을 이용해서 간편히 개발할 수 있다.
- mybatis는 java code와 sql문을 분리하여 편리하게 관리하도록 한다.
- SQL문은 *.xml 형식으로 저장한다.
- DB에 질의할 쿼리문을 관리하는 Mapper파일에 요청한다.

의존성 추가

	    <!-- mybatis 사용 위해 종속성 포함 -->
	    <dependency>
	      <groupId>org.mybatis.spring.boot</groupId>
	      <artifactId>mybatis-spring-boot-starter</artifactId>
	      <version>2.2.2</version>
	    </dependency>
	    
	    <!-- mySql 사용 위해 종속성 포함 -->
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>

DB 연결, mybatis, 초기 shema.sql&data.sql 실행 설정

# database
spring.datasource.url=jdbc:mysql://localhost:3307/sp?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=sp3245sp!@
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# mybatis
mybatis.config=mybatis/mybatis-config.xml
mybatis.mapper-locations=mybatis/mapper/*.xml

# schema.sql, data.sql excute in not embeded db
spring.sql.init.mode=always

mybatis config file 작성

- mapUnderscoreToCamelCase : Mybatis의 DTO(VO) 리턴 값을 Camel Case로 변환시킴
- callSettersOnNulls : ResultType 이 HashMap 일 때 값이 null 인 것이 누락되어 나오는데, null을 포함시켜 return 하게 한다.

<?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" />
        <setting name="callSettersOnNulls" value="true"/>
    </settings>
</configuration>

Mapper.java 생성

package com.eun.tutorial.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.eun.tutorial.dto.Book;

@Mapper
public interface TestMapper {
    List<Book> getBookLists();
}

Mapper.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="com.eun.tutorial.mapper.TestMapper">

  <select id="getBookLists" resultType="com.eun.tutorial.dto.Book">
  	SELECT * FROM book;
  </select>

</mapper>

초기 schema.xml 생성

drop table  if exists book;
create table book (id INT AUTO_INCREMENT, isbn varchar(255), name varchar(255), author varchar(255), primary key (id));

초기 data.xml 생성

insert into book(isbn, name, author) values ('isbn1', 'name1', 'author1');
insert into book(isbn, name, author) values ('isbn2', 'name2', 'author2');

결과 확인

http://localhost:8080/book/viewBooks

image

⚠️ **GitHub.com Fallback** ⚠️