首页 > 杂文归档 正文
MyBatis-Plus逆向工程——Generator的使用

 2021-01-10 19:20:04     

有一位志同道合的朋友给我留言说,MyBatis-Plus的逆向工程跟接口继承BaseMapper有什么区别,我想了想,怎么解释都不合适,最后决定出此文章进行讲解。
环境搭建


首先创建一张数据

有一位志同道合的朋友给我留言说,MyBatis-Plus的逆向工程跟接口继承BaseMapper有什么区别,我想了想,怎么解释都不合适,最后决定出此文章进行讲解。

环境搭建

首先创建一张数据库表

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
 id BIGINT(20) NOT NULL COMMENT '主键ID',
 name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
 age INT(11) NULL DEFAULT NULL COMMENT '年龄',
 email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
 PRIMARY KEY (id)
);

对应的数据如下

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');

创建SpringBoot项目

创建一个普通的SpringBoot项目,然后引入依赖,既然要跟数据库打交道,connector肯定不能少

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.18</version>
</dependency>

另外要使用mybatis-plus,当然也要引入该starter

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.1</version>
</dependency>

由于需要用到逆向工程,所以引入依赖

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-generator</artifactId>
  <version>3.4.1</version>
</dependency>

还需要一个模板引擎的依赖

<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.1</version>
</dependency>

为了方便起见,这里引入Lombok

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

然后编写一个类,直接执行即可!

class AutoCode {
  public static void main(String[] args) {
    https:// 1、全局配置
    GlobalConfig globalConfig = new GlobalConfig();https://构建全局配置对象
    String projectPath = System.getProperty("user.dir");https:// 获取当前用户的目录
    globalConfig
.setOutputDir(projectPath + "/mybatis-plus-01-start/src/main/java")https:// 输出文件路径
.setAuthor("微信搜一搜:贺贺学编程")https:// 设置作者名字
.setOpen(false)https:// 是否打开资源管理器
.setFileOverride(true)https:// 是否覆盖原来生成的
.setIdType(IdType.AUTO)https:// 主键策略
.setBaseResultMap(true)https:// 生成resultMap
.setBaseColumnList(true)https:// XML中生成基础列
.setServiceName("%sService");https:// 生成的service接口名字首字母是否为I,这样设置就没有I

    https:// 2、数据源配置
    DataSourceConfig dataSourceConfig = new DataSourceConfig();https:// 创建数据源配置
    dataSourceConfig
.setUrl("jdbc:mysql:https://127.0.0.1:3306/mybatis_plus?userSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("root")
.setDbType(DbType.MYSQL);

    https:// 3、包配置
    PackageConfig packageConfig = new PackageConfig();
    packageConfig
.setParent("com.hzy")
.setEntity("entity")
.setController("controller")
.setService("service")
.setMapper("mapper");

    https:// 4、策略配置
    StrategyConfig strategyConfig = new StrategyConfig();
    strategyConfig
.setCapitalMode(true)https:// 开启全局大写命名
.setInclude("user")https:// 设置要映射的表
.setNaming(NamingStrategy.underline_to_camel)https:// 下划线到驼峰的命名方式
.setColumnNaming(NamingStrategy.underline_to_camel)https:// 下划线到驼峰的命名方式
.setEntityLombokModel(false)https:// 是否使用lombok
.setRestControllerStyle(true)https:// 是否开启rest风格
.setControllerMappingHyphenStyle(true);https:// localhost:8080/hello_a_2


    https:// 5、自定义配置(配置输出xml文件到resources下)
    InjectionConfig cfg = new InjectionConfig() {
      @Override
      public void initMap() {
https:// to do nothing
      }
    };
    List<FileOutConfig> focList = new ArrayList<>();
    String templatePath = "/templates/mapper.xml.vm";
    https:// 自定义配置会被优先输出
    focList.add(new FileOutConfig(templatePath) {
      @Override
      public String outputFile(TableInfo tableInfo) {
https:// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath + "/mybatis-plus-01-start/src/main/resources/mapper/"
    + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
      }
    });
    cfg.setFileOutConfigList(focList);

    https:// 6、整合配置
    AutoGenerator autoGenerator = new AutoGenerator();https:// 构建代码生自动成器对象
    autoGenerator
.setGlobalConfig(globalConfig)https:// 将全局配置放到代码生成器对象中
.setDataSource(dataSourceConfig)https:// 将数据源配置放到代码生成器对象中
.setPackageInfo(packageConfig)https:// 将包配置放到代码生成器对象中
.setStrategy(strategyConfig)https:// 将策略配置放到代码生成器对象中
.setCfg(cfg)https:// 将自定义配置放到代码生成器对象中
.execute();https:// 执行!
  }
}

执行结果如下


代码中的注释比较多,我就不多说了

原文链接:http://www.yuepc.com/a/1596.html

http://www.yuepc.com 为 “沈一博客” 唯一官方服务平台,请勿相信其他任何渠道。