在开发过程中常常要写controller、service、mapper会发现这些工作繁琐冗余,自公司有了MyBatis-Plus还要我这个fw~
下面一起看看自动生成代码器吧~
- 1、pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--velocity模板引擎 mybatis-plus 代码生成器需要-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.18</version>
</dependency>
<!-- spring security 安全认证 -->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>-->
<!-- easyPoi 导入导出依赖-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
- 2、application.yml
server:
port: 8081
logging:
level:
com.hu: debug
spring:
# 数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/simpledemo?charactEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
servlet:
multipart:
enabled: true
max-file-size: 2000MB
max-request-size: 2000MB
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
- 3、config/MyBatisPlusConfig
@Configuration
@MapperScan("com.hu.mapper")
@EnableTransactionManagement
public class MyBatisPlusConfig {
//分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
//逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
}
- 4、com/hu/MPGenerator测试类
public class MyGenerator {
@Test
public void testGenerator(){
//需要构建一个 代码自动生成器 对象
AutoGenerator mpg = new AutoGenerator();
//1.全局配置
GlobalConfig gc = new GlobalConfig();
String path = System.getProperty("user.dir"); //获取项目路径
gc.setOutputDir(path + "/src/main/java"); //设置生成路径
gc.setAuthor("shunpeng.hu");
gc.setDateType(DateType.ONLY_DATE);
gc.setOpen(false);
gc.setFileOverride(false); //是否覆盖
gc.setServiceName("%sService"); //去Service的I前缀
gc.setIdType(IdType.ID_WORKER);
mpg.setGlobalConfig(gc);
//2.设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setUrl("jdbc:mysql://127.0.0.1:3306/simpledemo?charactEncoding=UTF-8&serverTimezone=UTC");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//3.包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("generator");
pc.setParent("com.hu");
pc.setEntity("domain");
pc.setMapper("mapper");
pc.setService("service");
pc.setServiceImpl("impl");
pc.setController("controller");
mpg.setPackageInfo(pc);
//4.策略配置
StrategyConfig sc = new StrategyConfig();
sc.setInclude("user");
sc.setNaming(NamingStrategy.underline_to_camel);
sc.setEntityLombokModel(true);
sc.setLogicDeleteFieldName("deleted");
//自动填充配置
TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(create_time);
tableFills.add(update_time);
sc.setTableFillList(tableFills);
mpg.setStrategy(sc);
mpg.execute(); //执行
}
}
最后看看生成的代码是比自己写的还要规范~