Spring Boot MyBatis 연결 데이터베이스 구성 예

최근에 바빠서 시간을 내서 MyBatis의 통합을 발표하지 못했습니다. 사실 mybatis 홈페이지는 2015년 11월 말에 SpringBoot 통합에 대한 Release 버전을 발표했습니다. 예시 코드:spring-boot_jb51.rar
앞에서 JPA와 JDBC 연결 데이터베이스에 대해 설명했고 본고는 공식 코드를 참고하여 요약하였다.
SpringBoot은 기본적으로 org를 사용합니다.apache.tomcat.jdbc.pool.DataSource
현재 HikariCP라는 JDBC 연결탱크 구성 요소가 있는데, 그 성능은 자주 사용하는 c3p0,tomcat,bone,vibur 등보다 훨씬 높다고 한다.
공사의 DataSource를 HirakiDataSource로 변경하려고 합니다. 방법은 간단합니다.
우선 응용 프로그램에서.properties 구성 파일에 지정된 dataSourceType

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
그리고 Pom에 Hikari의 의존을 추가합니다.

<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
  <!--  ,Spring Boot  -->
</dependency>
다음은 spring Boot에서 MyBatis를 설정하는 방법입니다.
Spring Boot에 MyBatis를 통합하는 방법에 관해서는 주석 기반 방식을 선택할 수도 있고 xml 파일 설정 방식을 선택할 수도 있습니다.양자를 실제로 사용하느냐, 아니면 XML을 사용하느냐 (공식적으로도 XML을 권장한다).
다음은 xml 방식을 통해 조회를 실현하는 방법을 소개하고, 그 다음에 설명 방식을 간단히 설명하며, 마지막으로 페이지 플러그인(PageHelper)의 통합을 첨부할 것이다.
1. xml 프로필을 통해
1、pom 의존 추가

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <!--  1.0.0 , ,1.0.1-SNAPSHOT  ,  -->
  <version>1.0.1-SNAPSHOT</version>
</dependency>
2. 인터페이스 매퍼(클래스가 아님)와 대응하는 매퍼를 만듭니다.xml 파일
관련 방법을 정의합니다. 방법 이름은 Mapper입니다.xml 파일의 id가 일치하면 자동으로 대응합니다
StudentMapper.Java

package org.springboot.sample.mapper;

import java.util.List;

import org.springboot.sample.entity.Student;

/**
 * StudentMapper, SQL , 
 *
 * @author  (365384722)
 * @create 2016 1 20 
 */
public interface StudentMapper extends MyMapper<Student> {

  List<Student> likeName(String name);

  Student getById(int id);

  String getNameById(int id);

}

MyMapper.java

package org.springboot.sample.config.mybatis;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 *  Mapper, Mapper 
 *
 */
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
  //TODO
  //FIXME  , , 
}

StudentMapper.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="org.springboot.sample.mapper.StudentMapper">

  <!-- type Student, ,  -->
  <resultMap id="stuMap" type="Student">
    <id property="id" column="id" />
    <result property="name" column="name" />
    <result property="sumScore" column="score_sum" />
    <result property="avgScore" column="score_avg" />
    <result property="age" column="age" />
  </resultMap>

  <select id="getById" resultMap="stuMap" resultType="Student">
    SELECT *
    FROM STUDENT
    WHERE ID = #{id}
  </select>

  <select id="likeName" resultMap="stuMap" parameterType="string" resultType="list">
    SELECT *
    FROM STUDENT
    WHERE NAME LIKE CONCAT('%',#{name},'%')
  </select>

  <select id="getNameById" resultType="string">
    SELECT NAME
    FROM STUDENT
    WHERE ID = #{id}
  </select>


</mapper> 

3. 실체 클래스

package org.springboot.sample.entity;

import java.io.Serializable;

/**
 *  
 *
 * @author   (365384722)
 * @create  2016 1 12 
 */
public class Student implements Serializable{

  private static final long serialVersionUID = 2120869894112984147L;

  private int id;
  private String name;
  private String sumScore;
  private String avgScore;
  private int age;

  // get set  

}

4. 응용 프로그램을 수정합니다.properties 프로필

mybatis.mapper-locations=classpath*:org/springboot/sample/mapper/sql/mysql/*Mapper.xml
mybatis.type-aliases-package=org.springboot.sample.entity

5. Controller 또는 Service 호출 방법 테스트

  @Autowired
  private StudentMapper stuMapper;

  @RequestMapping("/likeName")
  public List<Student> likeName(@RequestParam String name){
    return stuMapper.likeName(name);
  }
2. 메모 방식 사용
공식 Git의 코드 사용 설명 방식을 보면 설정이 간단하고 사용에 있어서 설명에 대해 많이 알아야 한다.xml과 주해 두 가지 방법이 좋은지 중구난조는 한 사람씩 봐야죠.
1. 시작 클래스(내)에 @MapperScan 메모 추가

@SpringBootApplication
@MapperScan("sample.mybatis.mapper")
public class SampleMybatisApplication implements CommandLineRunner {

  @Autowired
  private CityMapper cityMapper;

  public static void main(String[] args) {
    SpringApplication.run(SampleMybatisApplication.class, args);
  }

  @Override
  public void run(String... args) throws Exception {
    System.out.println(this.cityMapper.findByState("CA"));
  }

}

2. 인터페이스에서 메모를 사용하여 CRUD 문장 정의

package sample.mybatis.mapper;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import sample.mybatis.domain.City;

/**
 * @author Eddú Meléndez
 */
public interface CityMapper {

  @Select("SELECT * FROM CITY WHERE state = #{state}")
  City findByState(@Param("state") String state);

}

그 중에서 City는 일반 Java 클래스입니다.
3. 통합 페이지 분리 플러그인
이것은 페이지 플러그인을 통합하는 것보다 플러그인을 어떻게 통합하는지 소개하는 것이다.MyBatis는 차단기 인터페이스를 제공합니다. 우리는 자신의 차단기를 실현하여 플러그인으로 SqlSessionFactory에 불러올 수 있습니다.
어떤 개발자가 페이지 플러그인을 썼는데, 나는 사용하기에 괜찮다고 생각한다. 매우 편리하다.
프로젝트 주소:Mybatis-PageHelper_jb51.rar
다음은 간단히 설명합니다.
우선 스프링은 bean 주입에 의존할 때 MyBatis에서 인터셉터 인터페이스를 실현하는 모든 종류를 SqlSessionFactory에 주입하여plugin으로 존재한다.그렇다면 플러그인을 통합하는 것은 간단합니다. @Bean을 사용하여 PageHelper 대상을 만들면 됩니다.
1、pom 의존 추가

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>4.1.0</version>
</dependency>

2. MyBatisConfiguration 추가java

package org.springboot.sample.config;

import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

/**
 * MyBatis  
 *
 * @author  (365384722)
 * @create 2016 1 21 
 */
@Configuration
public class MyBatisConfiguration {

  private static final Logger logger = LoggerFactory.getLogger(MyBatisConfiguration.class);

  @Bean
  public PageHelper pageHelper() {
    logger.info(" MyBatis PageHelper");
    PageHelper pageHelper = new PageHelper();
    Properties p = new Properties();
    p.setProperty("offsetAsPageNum", "true");
    p.setProperty("rowBoundsWithCount", "true");
    p.setProperty("reasonable", "true");
    pageHelper.setProperties(p);
    return pageHelper;
  }

}

3. 페이지별 조회 테스트

  @RequestMapping("/likeName")
  public List<Student> likeName(@RequestParam String name){
    PageHelper.startPage(1, 1);
    return stuMapper.likeName(name);
  }
자세한 매개변수 사용 방법은 PageHelper 설명서 를 참조하십시오.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기