Spring Boot MyBatis接続データベース

15726 ワード

最近は忙しくて、時間を割いてMyBatisの統合を発表していませんでしたが、実はmybatis公式サイトは2015年11月末にすでにSpring Bootに統合されたReleaseバージョンを発表しました.Githubにコードがあります.https://github.com/mybatis/mybatis-spring-boot 上記ではJPAとJDBCの接続データベースについて説明しましたが、本論文も公式コードを参考にまとめました.
余談ですが、Spring Bootはデフォルトではorg.apache.tomcat.jdbc.pool.DataSourceを使用しています.今はHikariCPというJDBC接続プールのセットがあります.その性能は一般的なc 3 p 0、tomcat、bone、viburなどより高いと言われています.プロジェクト中のDataSourceをHrakiDataSourceに変更するつもりです.作り方は簡単です.まずappication.properties配置ファイルでdataSourceTypeを指定します.
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
そしてpomにHikaliの依存を追加します.
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <!--          ,Spring Boot         -->
</dependency>
話を元に、Spring BootにMyBatisを配置します.Spring BootにMyBatisを統合するには、注釈に基づいた方法を選択したり、xmlファイル構成を選択したりすることができます.両者を実際に使用することで、XMLを使用することが推奨されています.
以下では、xml方式によるクエリーの実現について説明します.次に簡単に注釈方式を説明します.最後に、改ページプラグイン(PageHelper)の統合を添付します.
一、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、インターフェースMapper(クラスではない)と対応するMapper.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) * @myblog http://blog.csdn.net/catoop/ * @create 2016 1 20  */
public interface StudentMapper {

    List<Student> likeName(String name);

    Student getById(int id);

    String getNameById(int id);

}
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) * @myblog http://blog.csdn.net/catoop/ * @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、appication.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);
    }
二、注釈方式を使う
公式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類です.MyBatisの注釈については、はっきりと述べた文章があります.参考になります.http://blog.csdn.net/luanlouis/article/details/35780175
三、改ページプラグインを統合する
ここでは改ページプラグインというより、pluginをどうやって一体化するかを紹介します.MyBatisはスクリーンインターフェースを提供しています.私たちは自分のスクリーンショットを実現して、それを一つのpluginとしてSql Session Factoryにロードします.Githubにはある開発者が改ページプラグインを書いていますが、使えばいいと思います.とても便利です.Githubプロジェクトの住所:https://github.com/pagehelper/Mybatis-PageHelper
ここで簡単に紹介します.まず、Springはbeanに依存して注入すると、MyBatisのInterceptorインターフェースを実現するすべての種類をSql Session Factoryに注入し、pluginとして存在します.それなら、私たちはpluginを一つにまとめるのは簡単です.@Beanを使ってPageHelperオブジェクトを作成すればいいです.
1、pom依存追加
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.0</version>
</dependency>
2、MyBatis Configration.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) * @myblog http://blog.csdn.net/catoop/ * @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説明ドキュメント(上のGigthubアドレス)を参照してください.