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を指定します.
以下では、xml方式によるクエリーの実現について説明します.次に簡単に注釈方式を説明します.最後に、改ページプラグイン(PageHelper)の統合を添付します.
一、xml配置ファイル方式による
1、pom依存追加
関連方法を定義し、Mapper.xmlファイルのIDと一致するように注意してください.StudentMapper.javaに自動的に対応します.
公式git上のコードは注釈方式を使っています.配置は簡単です.xmlと注釈のどちらの方法がいいかというと、みんなの口の調子はやはり一人一人によって違います.
1、スタートクラス(私の)に@MapperScanを追加します.
三、改ページプラグインを統合する
ここでは改ページプラグインというより、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依存追加
余談ですが、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アドレス)を参照してください.