(45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

大家在开发的时候,会喜欢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测试类;

       测试实体类com.kfit.demo.bean.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

       这里与其说集成分页插件,不如说是介绍如何集成一个pluginMyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个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 

 

31 Spring Boot导入XML配置【从零开始学Spring Boot

 

 

 

更多查看博客: http://412887952-qq-com.iteye.com/

 

 

 

原文地址:https://www.cnblogs.com/hehehaha/p/6147094.html