大家在刚开始工作的时候对dao,entity,service,controller都要自己去编写。而这部分代码,都是有一定的规范,有需求,就有对应的产品应运而生,AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
所以,今天来讲讲怎么用代码生成器!
首先就是pom文件~,将相关依赖配置完毕
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.6.RELEASE
com.cxyxs
auto
0.0.1-SNAPSHOT
auto
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus-boot-starter
3.3.0
com.baomidou
mybatis-plus-generator
3.3.1.tmp
org.apache.velocity
velocity-engine-core
2.2
org.projectlombok
lombok
true
mysql
mysql-connector-java
8.0.18
com.alibaba
druid
1.1.6
org.springframework.boot
spring-boot-devtools
true
com.spring4all
spring-boot-starter-swagger
1.5.1.RELEASE
codeauto
src/main/resources
**/*
true
src\main\java
**/*.xml
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-jar-plugin
true
lib/
com.cxyxs.auto.AutoApplication
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
package
copy-dependencies
${project.build.directory}/lib
org.apache.maven.plugins
maven-surefire-plugin
true
然后就是配置application文件----
该文件大家根据自己需求配置即可。主要将datasourse配置正确即可
#配置数据源
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/warehouse?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password:
max-active: 20
max-wait: 5000
initial-size: 1
filters: stat,log4j,wall
validation-query: SELECT 'X' #验证连接
enable: true
启动类(Application)就用大家平时用的就好~~~~~
接下来就是比较重要的!!!!
万事俱备只欠东风
package com.example.demo;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* Author: xiaobai
* Date:
* Modified By:
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class CodeGenerationTests {
@Test
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 全局配置
GlobalConfig gc = new GlobalConfig();
//当前路径
String projectPath = System.getProperty("user.dir");
//输出路径
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("me"); //设置作者
//生成代码后,是否打开文件夹
gc.setOpen(false);
gc.setFileOverride(false); //是否覆盖原来代码,个人建议设置为false,别覆盖,危险系数太高
gc.setServiceName("%sService"); //去掉service的I前缀,一般只需要设置service就行
/* gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
gc.setServiceImplName("%sServiceImpl");
gc.setControllerName("%sController");*/
gc.setEntityName("%sDO");
gc.setDateType(DateType.ONLY_DATE); //日期格式
gc.setSwagger2(true); // 实体属性 Swagger2 注解,实体类上会增加注释
mpg.setGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/warehouse?useUnicode=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8");
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("");
dsc.setDbType(DbType.MYSQL); //指定数据库的类型
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.demo"); //自定义包的路径
//pc.setModuleName("module"); //模块名称 设置后,会生成com.cxyxs.test.module,里面存放之前设置的mapper,entity
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("bus_customer","bus_goods","bus_inport","bus_outport","bus_provider",
"bus_sales","bus_salesback","sys_dept","sys_loginfo","sys_notice","sys_permission",
"sys_role","sys_role_permission","sys_user","sys_user_role"); //设置映射的表名,可以设置多个表
//表前缀设置 d_student
strategy.setTablePrefix(new String[]{"d_"});
//包的命名规则,使用驼峰规则
strategy.setNaming(NamingStrategy.underline_to_camel);
//列的名称,使用驼峰规则
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//是否使用lombok
strategy.setEntityLombokModel(true);
//驼峰命名
strategy.setRestControllerStyle(true);
strategy.setLogicDeleteFieldName("is_delete"); //逻辑删除,假删除会用到
//自动填充字段,在项目开发过程中,例如创建时间,修改时间,每次,都需要我们来指定,太麻烦了,设置为自动填充规则,就不需要我们赋值咯
TableFill fillInsert = new TableFill("create_time", FieldFill.INSERT);
TableFill fillUpdate= new TableFill("update_time", FieldFill.UPDATE);
List fillLists = new ArrayList();
fillLists.add(fillInsert);
fillLists.add(fillUpdate);
strategy.setTableFillList(fillLists);
//乐观锁
//strategy.setVersionFieldName("version");
mpg.setStrategy(strategy);
mpg.execute(); //执行
}
}
在该方法里面,大家需要将需要对应自己的数据库,需要使用的表,以及其他事项代码均有讲解。
最后运行main方法,代码即可生成。需要说明的是,数据库中的表字段有注释的话,在实体类里面也会有对应的注释的。
以上就是代码生成的步骤。