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实现单线程聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • SpringMVC请求、响应和拦截器的使用实例详解

    SpringMVC请求、响应和拦截器的使用实例详解

    拦截器(Interceptor) 它是一个Spring组件,并由Spring容器管理,并不依赖Tomcat等容器,是可以单独使用的,这篇文章给大家介绍SpringMVC请求、响应和拦截器的使用,感兴趣的朋友一起看看吧
    2024-03-03
  • springcloud feign docker上无法通讯的问题及解决

    springcloud feign docker上无法通讯的问题及解决

    这篇文章主要介绍了springcloud feign docker上无法通讯的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 解决SpringBoot application.yaml文件配置schema 无法执行sql问题

    解决SpringBoot application.yaml文件配置schema 无法执行sql问题

    这篇文章主要介绍了解决SpringBoot application.yaml文件配置schema 无法执行sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Springboot项目Maven依赖冲突的问题解决

    Springboot项目Maven依赖冲突的问题解决

    使用Spring Boot和Maven进行项目开发时,依赖冲突是一个常见的问题,本文就来介绍一下Springboot项目Maven依赖冲突的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java 实战范例之进销存管理系统的实现

    Java 实战范例之进销存管理系统的实现

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+vue+Springboot+ssm+mysql+maven+redis实现一个前后端分离的进销存管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java中的关键字synchronized 详解

    Java中的关键字synchronized 详解

    这篇文章主要介绍了Java中的关键字synchronized,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • java连接mysql数据库的方法

    java连接mysql数据库的方法

    这篇文章主要为大家详细介绍了java连接mysql数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片

    利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片

    这篇文章主要为大家详细介绍了利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Java里的static在Kotlin里如何实现

    Java里的static在Kotlin里如何实现

    这篇文章主要介绍了Java里的static在Kotlin里如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论