springboot mybatis-plus 逆向工程

官网地址:https://baomidou.com/

开发环境搭建

  • Springboot v3.1.4
  • mybatis-plus v3.5.3.2
    • mybatis-plus-boot-starter
    • mybatis-plus-generator
  • Apache FreeMarker v2.3.32
  • mysql
    • mysql-connector-j v8.1.0(是MySQL提供的JDBC驱动包)
    • dynamic-datasource-spring-boot-starter v4.1.3 (是一个基于springboot的快速集成多数据源的启动器)
       

创建spring boot项目并添加依赖

①、添加mybatis-plus依赖

<!-- mybatis-plus-boot-starter 启动器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.2</version>
        </dependency>

        <!-- mybatis-plus-generator 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.2</version>
        </dependency>

        <!-- freemarker 生成器使用的模板 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.32</version>
        </dependency>
View Code

②、添加Mysql相关依赖

 1         <!-- dynamic-datasource-spring-boot-starter -->
 2         <dependency>
 3             <groupId>com.baomidou</groupId>
 4             <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
 5             <version>4.1.3</version>
 6         </dependency>
 7 
 8         <!-- mysql-connector-j 提供jdbc -->
 9         <dependency>
10             <groupId>com.mysql</groupId>
11             <artifactId>mysql-connector-j</artifactId>
12             <version>8.1.0</version>
13         </dependency>
View Code

③、配置数据

 1 spring:
 2   datasource:
 3     dynamic:
 4       # 配置默认数据源
 5       primary: primary
 6       datasource:
 7         # 数据源-1,名称为 primary
 8         primary:
 9           username: 用户名
10           password: 密码
11           driver-class-name: com.mysql.cj.jdbc.Driver
12           url: jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
View Code

④、将官网代码Copy,修改为我所用

 1 FastAutoGenerator.create(URL, USERNAME, PASSWORD)
 2                 .globalConfig(builder -> {
 3                     builder.author("MARW") // 设置作者
 4                             //.enableSwagger() // 开启 swagger 模式
 5                             //.fileOverride() // 覆盖已生成文件(高版本已经弃用)
 6                             .outputDir("D://"); // 指定输出目录
 7                 })
 8                 .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
 9                     int typeCode = metaInfo.getJdbcType().TYPE_CODE;
10                     if (typeCode == Types.SMALLINT) {
11                         // 自定义类型转换
12                         return DbColumnType.INTEGER;
13                     }
14                     return typeRegistry.getColumnType(metaInfo);
15 
16                 }))
17                 .packageConfig(builder -> {
18                     builder.parent("com.marw") // 设置父包名
19                             .moduleName("system") // 设置父包模块名
20                             .pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 设置mapperXml生成路径
21                 })
22                 .strategyConfig(builder -> {
23                     builder.addInclude("t_user") // 设置需要生成的表名
24                             .addTablePrefix("t_", "c_"); // 设置过滤表前缀
25                 })
26                 .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
27                 .execute();
View Code

简单的代码生成器就完成了,但是我们代码生成的模板是mybatis-plus-generator中模板,如果想自定义的话就需要怎么做呢???

自定义代码生成模板

 ①、查看mybatis-plus-generator中的模板

②、将所有模板都Copy到resources下

③、指定模板

 具体代码如下:

.templateConfig(builder -> {
                    builder.xml("generator/templates/mapper.xml")
                            .mapper("generator/templates/mapper.java")
                            .entity("generator/templates/entity.java")
                            .service("generator/templates/service.java")
                            .serviceImpl("generator/templates/serviceImpl.java")
                            .controller("generator/templates/controller.java");
                })

此时测试会有问题

①、不允许覆盖文件

解决方案:需要对每一个生成代码都添加运行覆盖的配置

②、可能会出现找不到模板,首先查看是不是配置的路径是否有问题

 

posted @ 2023-10-19 15:23  一杯水M  阅读(79)  评论(0编辑  收藏  举报