当前位置: 代码网 > it编程>编程语言>Java > MybatisPlus常用依赖、配置、插件方式

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

2024年07月28日 Java 我要评论
mybatisplus常用依赖、配置、插件依赖<dependency> <groupid>com.baomidou</groupid> <arti

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();

    }

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com