大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际中会集成多个,这样保存的数据的时候,选择一个最方便的也就是JPA,查询的时候,或者统计的时候,选择一个效率最高的,也就是直接使用SQL语句方式,当然这并一定要这样的,现在优化方式又很多。那么这节说说怎么在Spring Boot中使用MyBatis吧。主要分几个步骤进行讲解:
(1)新建maven project;
(2)在pom.xml文件中引入相关依赖;
(3)创建启动类App.java
(4)在application.properties添加配置文件;
(5)编写Demo测试类;
(6)编写DemoMapper;
(7)编写DemoService
(8)编写DemoController;
(9)加入PageHelper
接下里我们一起来进行实现吧。
(1)新建maven project;
新建一个maven project,取名为:spring-boot-mybatis
(2)在pom.xml文件中引入相关依赖;
在pom.xml中加入依赖:mysql驱动,mybatis依赖包,mysql分页PageHelper:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kfit</groupId>
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-mybatis</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->
<java.version>1.8</java.version>
</properties>
<!--
spring boot 父节点依赖,
引入这个之后相关的引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加。
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<dependencies>
<!-- spring boot web支持:mvc,aop... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql 数据库驱动. -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--
spring-boot mybatis依赖:
请不要使用1.0.0版本,因为还不支持拦截器插件,
1.1.1 是博主写帖子时候的版本,大家使用最新版本即可
-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!--
MyBatis提供了拦截器接口,我们可以实现自己的拦截器,
将其作为一个plugin装入到SqlSessionFactory中。
Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。
Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
</project>
(3)创建启动类App.java >com.kfit.App.java
package com.kfit;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类;
* @author Angel(QQ:412887952)
* @version v.0.1
*/
@SpringBootApplication
@MapperScan("com.kfit.*.mapper")
publicclass App {
publicstaticvoid main(String[] args) {
SpringApplication.run(App.class, args);
}
}
这里和以往不一样的地方就是MapperScan的注解,这个是会扫描该包下的接口。
这里我们使用注解的方式进行使用MyBatis,当然您也可以使用xml文件的方式进行使用。
(4)在application.properties添加配置文件;
Mysql的配置,这个我们已经是轻车熟路了:
########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
(5)编写Demo测试类;
package com.kfit.demo.bean;
/**
* 测试类.
* @author Angel(QQ:412887952)
* @version v.0.1
*/
publicclass Demo {
private long id;
private String name;
public long getId() {
returnid;
}
public void setId(longid) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(6)编写DemoMapper;
MyBatis使用类,这里主要是@select进行使用.
com.kfit.demo.mapper.DemoMappper:
package com.kfit.demo.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.kfit.demo.bean.Demo;
public interface DemoMappper {
@Select("select *from Demo where name = #{name}")
public List<Demo> likeName(String name);
@Select("select *from Demo where id = #{id}")
public Demo getById(long id);
@Select("select name from Demo where id = #{id}")
public String getNameById(long id);
}
(7)编写DemoService
com.kfit.demo.service.DemoService:
package com.kfit.demo.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kfit.demo.bean.Demo;
import com.kfit.demo.mapper.DemoMappper;
@Service
public class DemoService {
@Autowired
private DemoMappper demoMappper;
public List<Demo> likeName(String name){
return demoMappper.likeName(name);
}
}
(8)编写DemoController;
com.kfit.demo.controller.DemoController:
package com.kfit.demo.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageHelper;
import com.kfit.demo.bean.Demo;
import com.kfit.demo.service.DemoService;
@RestController
publicclass DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("/likeName")
public List<Demo> likeName(String name){
return demoService.likeName(name);
}
}
运行访问:http://127.0.0.1:8080/likeName?name=张三 就可以看到全部的数据了。
(9)加入PageHelper
这里与其说集成分页插件,不如说是介绍如何集成一个plugin。MyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到SqlSessionFactory中。
Github上有位开发者写了一个分页插件,我觉得使用起来还可以,挺方便的。
Github项目地址: https://github.com/pagehelper/Mybatis-PageHelper
当然需要添加相应的依赖包了,我们在上面已经配置了,这里简单说下:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
新增MyBatisConfiguration.java
com.kfit.config.mybatis.MyBatisConfiguration:
package com.kfit.config.mybatis;
import java.util.Properties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.pagehelper.PageHelper;
/**
* 注册MyBatis分页插件PageHelper
* @author Angel(QQ:412887952)
* @version v.0.1
*/
@Configuration
public class MyBatisConfiguration {
@Bean
public PageHelper pageHelper() {
System.out.println("MyBatisConfiguration.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;
}
}
分页查询测试
@RequestMapping("/likeName")
public List<Demo> likeName(String name){
PageHelper.startPage(1,1);
return demoService.likeName(name);
}
这个使用起来特别的简单,只是在原来查询的代码之前加入了一句:
PageHelper.startPage(1,1);
第一个参数是第几页;
第二个参数是每页显示条数。
访问http://127.0.0.1:8080/likeName?name=张三 进行测试。
【Spring Boot 系列博客】
54. spring boot日志升级篇—logback【从零开始学Spring Boot】
52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】
51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
50. Spring Boot日志升级篇—log4j【从零开始学Spring Boot】
49. spring boot日志升级篇—理论【从零开始学Spring Boot】
48. spring boot单元测试restfull API【从零开始学Spring Boot】
47. Spring Boot发送邮件【从零开始学Spring Boot】
46. Spring Boot中使用AOP统一处理Web请求日志
45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】
44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】
43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
42. Spring Boot多数据源【从零开始学Spring Boot】
41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】
40. springboot + devtools(热部署)【从零开始学Spring Boot】
39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot】
39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot】
39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot】
39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot】
38 Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】
37 Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】
36 Spring Boot Cache理论篇【从零开始学Spring Boot】
35 Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】
34Spring Boot的启动器Starter详解【从零开始学Spring Boot】
33 Spring Boot 监控和管理生产环境【从零开始学Spring Boot】
32 Spring Boot使用@SpringBootApplication注解【从零开始学Spring Boot】