天天看点

Spring Boot整合Mybatis Plus

前面演示了很多整合案例,今天笔录下整合Mybatis Plus的过程,后面文章涉及整合框架组件的文章,会大部分基于Spring Boot来做,因为上一篇文章我们也理解了,Spring Boot已经将整个生态链集成达到了比较规范的程度。

Mybatis Plus

我们知道Mybatis是一款非常优秀的JDBC持久化框架,利用它我们可以很方便的搭建DAO实现,而Mybatis Plus则是对Mybatis的更进一步增强,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方的解释。

gradle配置

mybatis plus团队对集成Spring Boot作了适配,制作了一个starter,starter jar中包含了自动配置,以及依赖了其它 mybatis plus相关包、mybatis、Spring-boot-starter-jdbc、Spring-boot-autoconfigure。

而只需引入以下即可:

compile "com.baomidou:mybatis-plus-boot-starter:2.3"
           

starter很强大,这也是 Spring boot面向特定功能,快速引入一系列jar广泛使用的方式。

application.yml

mybatis-plus:
  # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/*Mapper.xml
  mapper-locations: classpath:/**/*Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: org.wbw.**.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 
    #驼峰下划线转换
    db-column-underline: true
    #mp2.3+ 全局表前缀 mp_
    #table-prefix: mp_
    #刷新mapper 调试神器
    #refresh-mapper: true
    #数据库大写下划线转换
    #capital-mode: true
    # Sequence序列接口实现类配置
    key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
    #逻辑删除配置(下面3个配置)
    logic-delete-value: 
    logic-not-delete-value: 
    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
    #自定义填充策略接口实现
    #meta-object-handler: com.baomidou.springboot.MyMetaObjectHandler
  configuration:
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
    map-underscore-to-camel-case: true
    cache-enabled: false
    #配置JdbcTypeForNull, oracle数据库必须配置
    jdbc-type-for-null: 'null'
  type-enums-package: org.wbw.**.type
           

额外的javaConfig定义扫描Mapper包,或根据需要使用分布插件:

package org.wbw.mybatisplus.config;

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan(basePackages = "org.wbw.**.mapper")
public class MybatisPlusConfig {

    /*
     * 分页插件,自动识别数据库类型
     * 多租户,请参考官网【插件扩展】
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
           

启动类:

package org.wbw.mybatisplus;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.wbw.mybatisplus.entity.Blog;
import org.wbw.mybatisplus.mapper.BlogMapper;

@SpringBootApplication
public class MybatisPlusSpringBootApp {

    public static void main(String[] args) {

        // 启动Spring boot应用
        ApplicationContext applicationContext = SpringApplication.run(MybatisPlusSpringBootApp.class, args);

        // 启动完成之后,拿到Mapper访问下数据库
        testQuery(applicationContext);

    }

    private static void testQuery(ApplicationContext applicationContext) {
        BlogMapper blogMapper = applicationContext.getBean(BlogMapper.class);
        Blog blog = blogMapper.selectBlog();
        System.out.println(blog);
    }

}
           

OK大功造成,是不是比之前用Spring配置简单多了?

继续阅读