Mybatis-Plus代码生成器模板
相关介绍
Mybatis-Plus代码生成器是基于 MyBatis 核心框架进行封装的一款快速生成Java代码的工具。它结合了 Mybatis-Plus 自身的代码增强功能和 Mybatis 的 XML 配置文件生成器,可以帮助开发者快速地生成 Java 实体类、XML 配置文件、Mapper 接口以及 Service 和 Controller 等代码,可以大大提高开发效率。
Mybatis-Plus的代码生成器主要具有以下特点:
- 支持多种生成方式:Mybatis-Plus 支持使用命令行、Maven 插件和IDEA插件等多种方式进行生成。
- 可配置性强:Mybatis-Plus 提供了丰富的配置选项,可以按照不同的需求生成对应的代码。
- 生成的代码规范易读易懂:Mybatis-Plus能够自动根据数据库表结构生成实体类和Mapper接口,并根据命名规范自动映射数据库表和Java类。
- 支持自定义模板:开发者可以根据项目需求自定义代码模板,可以方便地定制生成的代码格式和内容。
总之,通过 Mybatis-Plus 的代码生成器,开发者可以快速生成符合规范的 Java 代码,同时可以减少开发过程中的重复代码编写,提高开发效率和代码质量。
实现原理
通过MyBatis-Plus
逆向工程,根据表创建对应的entity
、service
、mapper
、controller
,大大简化开发
相关基础依赖
<!-- MyBatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置代码模板
package com.liner;
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.NamingStrategy;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//创建对象
AutoGenerator autoGenerator = new AutoGenerator();
//数据源
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//---数据库类型
dataSourceConfig.setDbType(DbType.MYSQL);
//---驱动
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
//---Url
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/数据库?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
//---用户名
dataSourceConfig.setUsername("用户名");
//---密码
dataSourceConfig.setPassword("密码");
//将数据源赋给AutoGenerator 对象
autoGenerator.setDataSource(dataSourceConfig);
//全局配置
GlobalConfig globalConfig = new GlobalConfig();
//---代码生成后的存放路径
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
//---代码生成的作者
globalConfig.setAuthor("Xxx");
//---代码生成后是否打开
globalConfig.setOpen(false);
//去掉生成Service的I --------- 默认生成的是XXXIService,这样设置后显示的是XXXService,%s表示类的名字
globalConfig.setServiceName("%sService");
//将全局配置赋给AutoGenerator 对象
autoGenerator.setGlobalConfig(globalConfig);
//包配置 ----不同的类放在不同的包下
PackageConfig packageConfig = new PackageConfig();
//---父包的命名
packageConfig.setParent("com.wang");
//---实体类entity包的命名
packageConfig.setEntity("entity");
//---持久层mapper包的命名
packageConfig.setMapper("mapper");
//---业务层service包的命名
packageConfig.setService("service");
//---实现类serviceImpl包的命名
packageConfig.setServiceImpl("service.impl");
//---控制器controller包的命名
packageConfig.setController("controller");
//将包配置赋给AutoGenerator 对象
autoGenerator.setPackageInfo(packageConfig);
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
//---包含的要生成数据库中具体的表的名称,可一次写多个,不同表名之间 “,” 连接
strategyConfig.setInclude("数据库中的表名");
//---设置表名 underline_to_camel:下划线转驼峰,是因为数据库的命名规范和Java的命名规范稍有不同
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//---设置字段名 underline_to_camel:同上
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//---添加Lombok注解,每个实体类都有个 @Data 注解
strategyConfig.setEntityLombokModel(true);
//---设置表数据创建时间
TableFill tableFill = new TableFill("create_time", FieldFill.INSERT);
//---设置表数据修改时间
TableFill tableFill2 = new TableFill("update_time", FieldFill.INSERT_UPDATE);
List<TableFill> list = Arrays.asList(tableFill,tableFill2);
//---存放到策略配置中
strategyConfig.setTableFillList(list);
//将策略配置赋给AutoGenerator 对象
autoGenerator.setStrategy(strategyConfig);
//启动
autoGenerator.execute();
}
}