MybatisPlus代码生成器-SpringBoot
这部分完全可以参考官网文档:https://baomidou.com/
我这里举个例子
引入依赖:
<!-- mybatisplus 基本功能引入它 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- mybatisplus 代码生成器必须引入它 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!-- mybatisplus 代码生成器配合使用 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
application.properties配置文件
# 开启mp驼峰命名
mybatis-plus.configuration.map-underscore-to-camel-case=true
# 配置mp全局逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
# 显示mp的sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 当然,数据库的相关配置肯定不可少
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc://mysql://localhost:3306/common-login?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
# ...
在test目录或者随便什么位置,执行如下代码生成器
package com.hssy.login;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CodeGenerator {
public static void main(String[] args) {
List<String> tables = new ArrayList<>();
// tables.add("p_user");
// tables.add("p_question");
// tables.add("game_category");
// tables.add("game_game_category"); // TODO
tables.add("user"); // TODO
FastAutoGenerator.create("jdbc:mysql://localhost:3306/common-login?serverTimezone=UTC","root","123456")
.globalConfig(builder -> {
builder.author("hssy") //作者
.outputDir(System.getProperty("user.dir")+"\\src\\main\\java") //输出路径(写到java目录)
.enableSwagger() //开启swagger
.commentDate("yyyy-MM-dd")
.fileOverride(); //开启覆盖之前生成的文件
})
.packageConfig(builder -> {
builder.parent("com.hssy")
.moduleName("login") //模块名称 TODO
.entity("entity") //实体类名称 TODO
.service("service") //service名称 TODO
.serviceImpl("service.impl") // TODO
.controller("controller") // TODO
.mapper("mapper") // TODO
.xml("mapper") // TODO
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"\\src\\main\\resources\\mapper"));// TODO
})
.strategyConfig(builder -> {
builder.addInclude(tables)
.addTablePrefix("test_") //过滤表名前缀,比如p_test,我们生成的实体类名就是test // TODO
.serviceBuilder() //sevice策略配置
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder() //实体类策略配置
.enableLombok() //开启lombok
.logicDeleteColumnName("is_deleted") //说明逻辑删除的是哪个字段
.enableTableFieldAnnotation() //属性加上说明注解
.controllerBuilder() //controller配置策略
// 映射路径使用连字符格式,而不是驼峰
.enableHyphenStyle()
.formatFileName("%sController")
.enableRestStyle() //开启RestController
.mapperBuilder() //mapper配置策略
//生成通用的resultMap
.enableBaseResultMap()
.superClass(BaseMapper.class) //继承哪个父类
.formatMapperFileName("%sMapper")
.enableMapperAnnotation() //开启@Mapper注解
.formatXmlFileName("%sMapper");
})
// .templateConfig(new Consumer<TemplateConfig.Builder>() {
// @Override
// public void accept(TemplateConfig.Builder builder) {
// // 实体类使用我们自定义模板
// builder.entity("templates/myentity.java");
// }
// })
// .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
MybatisPlus的配置文件
更多配置可参考官网
package com.hssy.login.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
还没有评论,来说两句吧...