Spring Boot-整合MyBatis

Posted 幸遥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot-整合MyBatis相关的知识,希望对你有一定的参考价值。

Spring Boot整合MyBatis

引入MyBatis和数据库驱动依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
</dependency>

使用mybatis-spring-boot-starter,这样可以减少很多配置

  • 减少XML配置;

  • 自动检测存在的DataSource;

  • 自动使用SqlSessionFactoryBean传递DataSource作为一个输入创建和注册一个SqlSessionFactory实例;

  • 自动使用SqlSessionFactory创建和注册一个SqlSessionTemplate实例;

  • 自动扫描mapper,连接这些mapper和SqlSessionTemplate并注册mapper到spring上下文,这样一来这些mapper就可以被注入为您的bean

在SSM架构中,使用MyBatis需要手动配置DataSource,SqlSessionFactory(配置数据源和Mybatis配置文件),MapperScannerConfigurer(扫描Mapper接口类)等,在Mybatis配置文件中可以配置实体别名和mapper的xml文件

使用Mybatis-spring-boot-starter,这些配置都可以在applicaton.yml配置文件中配置

使用Druid数据源

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.6</version>
</dependency>

使用阿里的druid作为数据库连接池,该连接池实现了监控的功能

使用MyBatis

SpringBoot中MyBatis的配置

spring:
  # 数据源(数据库连接)配置
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true&serverTimezone=Asia/Hong_Kong
      username: root
      password: ranger
      # 连接池配置
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 30000   # 连接超时时间
      # 配置检测可以关闭的空闲连接间隔时间
      time-between-eviction-runs-millis: 60000
      # 配置连接在池中的最小生存时间
      min-evictable-idle-time-millis: 300000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false

      # WebStatFilter配置
      web-stat-filter:
        enabled: true
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤的格式
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

      # StatViewServlet配置
      stat-view-servlet:
        enabled: true
        # 访问路径为/druid时,跳转到StatViewServlet
        url-pattern: /druid/*
        # 是否能够重置数据
        reset-enable: false
        # 需要账号密码才能访问控制台
        login-username: druid
        login-password: ranger

      # 配置StatFilter
      filter:
        stat:
          log-slow-sql: true
    driver-class-name: com.mysql.jdbc.Driver
    
# MyBatis的配置
mybatis:
  # mapper的xml扫描路径
  mapper-locations: classpath:mapper/*.xml
  # type alias的扫描路径
  type-aliases-package: com.ranger.boot.mybatis.entity
  # mybatis配置文件
  # config-location: classpath:mybatis-config.xml

启动类配置

@SpringBootApplication
// Mapper接口类扫描包
@MapperScan("com.ranger.boot.mybatis.mapper")
public class MyBatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyBatisApplication.class,args);
    }
}

编写对应的实体类,Mapper接口文件和xml文件

public interface UserMapper {
    List<User> queryUser();
}

public class User {
    private String name;
    private int age;
    // getter,setter,toString
}
<?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="com.ranger.boot.mybatis.mapper.UserMapper">
    <select id="queryUser" resultType="com.ranger.boot.mybatis.entity.User">
        select * from user;
    </select>
</mapper>
  1. 编写controller类调用UserMapper的方法,提供测试接口
@SpringBootApplication
@MapperScan("com.ranger.boot.mybatis.mapper")
@Controller
public class MyBatisApplication {

    @Autowired
    private UserMapper userMapper;

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

    @RequestMapping("users")
    @ResponseBody
    public List<User> getAllUser(){
        return userMapper.queryUser();
    }
}

最后启动应用访问users接口,就可以看到数据库中user表所有的记录

结束

简单的语句只需要使用@Insert、@Update、@Delete、@Select这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider等注解,具体使用可以参考MyBatis官方文档

以上是关于Spring Boot-整合MyBatis的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot:整合MyBatis框架

Spring Boot2 系列教程 | SpringBoot 整合 Mybatis

spring boot整合Mybatis

spring boot 与 Mybatis整合(*)

Spring Boot-整合MyBatis

Spring boot 学习笔记 - 整合MyBatis