1.导入依赖:
<!--MySQL连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis plus代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<!--模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!--单元测试,如果是想用@Test来运行代码生成的话就需要这个依赖,否则不需要-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
2. 编写自动生成的配置代码:
官网模板请戳 这里,确定就是细节的配置没有描述清楚。下面是较为详细描述版本的代码:
package com.lcm.demo;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;
/**
* @author Coder-lcm
* @date 2020/11/6
*/
public class CodeGenerator {
/**
* 这里主要通过单元测试来生生成,当然直接通过main方法也是可以的
*/
@Test
public void main() {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
/**
* 要生成的代码的存储位置:这里为了避免差错,使用绝对路径,注意:本测试系统是Ubuntu,无盘符这一说
*/
gc.setOutputDir("/home/vitory/Workspace/idea projects/demo/src/main/java");
gc.setAuthor("Coder-Lcm"); //说白了就是代码头部的描述信息(作者)
gc.setOpen(false); //生成后是否打开资源管理器
gc.setServiceName("%sService"); //service命名风格:默认以I开头表示service接口,例如IAccountService,个人不习惯,此处是为了去掉I开头
gc.setIdType(IdType.AUTO);//主键生成策略,这里的效果是: @TableId(value = "id", type = IdType.AUTO)
gc.setDateType(DateType.ONLY_DATE); //日期类型
// gc.setSwagger2(true); 实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/nimuni?useUnicode=true&useSSL=false&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("数据库密码");
dsc.setDbType(DbType.MYSQL); //数据库类型
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("nimuni"); //模块名称
pc.setParent("com.lcm");//顶层包结构
pc.setEntity("model");//存实体类的包名
pc.setService("service");//存service业务类接口的包名
pc.setMapper("mapper");//存mapper的包名
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
//要自动生成代码的数据库表名,多个表就用逗号隔开
strategy.setInclude("nimuni_account","nimuni_role","nimuni_databank","nimuni_datatype","nimuni_discuss_files","nimuni_discuss_follow","nimuni_discuss_topic","nimuni_article_main", "nimuni_article_answer","nimuni_answer_correct","nimuni_account_rela_role");
strategy.setNaming(NamingStrategy.underline_to_camel);//开启下划线与小驼峰的映射。即user_name --> userName
strategy.setColumnNaming(NamingStrategy.underline_to_camel); //开启字段下划线与小驼峰的映射。即user_name --> userName
strategy.setTablePrefix(pc.getModuleName() + "_"); //去掉表名的特点前缀:一般数据块表名=项目名称+真实表名,如nimuni_account表,这里就是为了去掉nimuni_前缀
// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
strategy.setEntityLombokModel(true); //实体类使用Lombok注解(可以省略很多getter、setter代码),具体自己看lombok的介绍
strategy.setRestControllerStyle(true); //controller使用@RestController,即直接返回JSON数据
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
mpg.execute(); //执行代码生成
}
}
3.效果
3.1 代码生成前:
3.2 代码生成后:
笔记就写到这了,如有错误,欢迎评论区指出!!!