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