MybatisPlus常用依赖、配置、插件方式

 更新时间:2024年07月27日 10:58:34   作者:Sucker_苏  
这篇文章主要介绍了MybatisPlus常用依赖、配置、插件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

MybatisPlus常用依赖、配置、插件

依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

<!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>${velocity.version}</version>
</dependency>

插件配置

  • 一般建立config包,新建一个配置类
  • 一般添加插件直接使用
@Configuration
@MapperScan(value = "com.sucker.eduservice.mapper")
public class EduConfig {

    //mybatis-plus插件配置
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));//分页插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//乐观锁插件
        return interceptor;
    }
}

自动填充

  • 首先在实体类上需要添加注解
@TableField(fill = FieldFill.INSERT)
  • 若需要给id添加值,则加上注解
@TableId(type = IdType.ASSIGN_ID)

此处例子ID是在数据库中自增因此没有使用该注解

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;

    //数据库中是下划线,实体类要驼峰
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)//自动填充注解
    private Date updateTime;

    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;//版本号

    @TableLogic
    private Integer deleted;

}

在新建handler包,新建MyMetaObjectHandler类,需要实现MetaObjectHandler

在其中进行自动填充配置

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);

        this.setFieldValByName("version", 1, metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

代码生成器配置

一般只写在test目录中,因为只使用一次

package com.sucker.demo;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.junit.Test;

import java.util.Collections;


public class CodeGenerator {
    // 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
    @Test
    public void test(){
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/guli_edu?useUnicode=true&characterEncoding=utf8",
                "root", "123456")
                .globalConfig(builder -> {
                    builder.author("sucker") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .dateType(DateType.ONLY_DATE)
                            .fileOverride()
                            .outputDir("D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu"+"\\src\\main\\java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.sucker") // 设置父包名
                            .moduleName("eduservice") // 设置父包模块名
                            .controller("controller")
                            .entity("entity")
                            .service("service")
                            .mapper("mapper")
                            .xml("mapper")
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml,
                                    "D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("edu_teacher") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_") // 设置过滤表前缀
                            .serviceBuilder()
                            .formatServiceFileName("%sService")
                            .entityBuilder()
                            .enableLombok()
                            .logicDeleteColumnName("is_deleted")
                            .enableTableFieldAnnotation()
                            .controllerBuilder()
                            .formatFileName("%sController")
                            .enableRestStyle()
                            .mapperBuilder()
                            .enableBaseResultMap()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
                .templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();

    }

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java四种常用线程池的详细介绍

    Java四种常用线程池的详细介绍

    今天小编就为大家分享一篇关于Java四种常用线程池的详细介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 用java生成html文件实现原理及代码

    用java生成html文件实现原理及代码

    用printStream来向html文件里输出数据,先创建一个StringBuilder对象,通过append方法来为其添加html语句,具体实现如下,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08
  • Springboot+TCP监听服务器搭建过程图解

    Springboot+TCP监听服务器搭建过程图解

    这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot使用Kafka来优化接口请求的并发方式

    SpringBoot使用Kafka来优化接口请求的并发方式

    这篇文章主要介绍了SpringBoot使用Kafka来优化接口请求的并发方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java中的观察者模式实例讲解

    Java中的观察者模式实例讲解

    这篇文章主要介绍了Java中的观察者模式实例讲解,本文先是讲解了观察者模式的概念,然后以实例讲解观察者模式的实现,以及给出了UML图,需要的朋友可以参考下
    2014-12-12
  • Spring Cloud 中使用 Sentinel 实现服务限流的两种方式

    Spring Cloud 中使用 Sentinel 实现服务限流的两种方式

    这篇文章主要介绍了Spring Cloud 中使用 Sentinel 实现服务限流的方式,通过示例代码主要介绍了Sentinel的两种实现限流的方式,需要的朋友可以参考下
    2024-03-03
  • 简单了解JAVA构造方法

    简单了解JAVA构造方法

    构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法.下面小编和大家来一起学习一下吧
    2019-06-06
  • Java之如何读取Excel获取真实行数

    Java之如何读取Excel获取真实行数

    这篇文章主要介绍了Java之如何读取Excel获取真实行数问题,具有很好的参考价值,希望对大家有所帮助。
    2023-06-06
  • Spring中的动态数据源解读

    Spring中的动态数据源解读

    这篇文章主要介绍了关于Spring中的动态数据源解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • MybatisPlus条件查询的具体使用

    MybatisPlus条件查询的具体使用

    MybatisPlus通过条件构造器可以组装复杂的查询条件,本文主要介绍了MybatisPlus条件查询的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论