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(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论