Mybatis-Plus自动生成代码

Mybatis-Plus自动生成代码

💡 官网:https://baomidou.com/pages/779a6e/

1.导入依赖

  <!--            MybatisPlus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!-- MP自动生成代码 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version>
        </dependency>
        <!--velocity模板-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!--        swagger ui-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <!--在引用时请在maven中央仓库搜索最新版本号-->
            <version>3.0.3</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2.application.yml

配置 数据库相关数据

3.Generator(MP自动生成代码)

package com.example;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * MP自动生成代码
 */
public class Generator {

    // 表名的前缀,从表生成代码时会去掉前缀
    private static final String TABLE_PREFIX = "";

    public static void main(String[] args) {
//——————————————————————————————————模板  start—————————————————————————————————
//        //1、配置数据源
//        FastAutoGenerator.create("url", "username", "password")
//        //2、全局配置
//        .globalConfig(...)
//        //3、包配置
//        .packageConfig(...)
//        //4、策略配置
//        .strategyConfig(...)
//        //5、模板引擎配置
//        .templateEngine(...)
//        //6、执行
//        .execute();
//——————————————————————————————————模板  end—————————————————————————————————

        Scanner scanner = new Scanner(System.in);
        System.out.println("————————————————————————————————————数据库配置——————————————————————————————————————");
        System.out.println("输入库名:");
        String databasename = scanner.next();
        System.out.println("输入用户名:");
        String JDBC_USER_NAME = scanner.next();
        System.out.println("输入密码:");
        String JDBC_PASSWORD = scanner.next();
        System.out.println("————————————————————————————————————包配置——————————————————————————————————————");
        System.out.println("输入包名:");
        String PACKAGE_NAME = scanner.next();
        System.out.println("输入模块名:");
        String MODULE_NAME = scanner.next();
        System.out.println("————————————————————————————————————表配置——————————————————————————————————————");
        System.out.println("创建几个表:");
        Integer i = scanner.nextInt();
        System.out.println("输入表名(回车分开):");
        List<String> TBL_NAMES_List = new ArrayList<>();
        for(int x = 0 ; x < i ; x++){
            TBL_NAMES_List.add(scanner.next());
        }
        String[] TBL_NAMES = TBL_NAMES_List.toArray(new String[TBL_NAMES_List.size()]);
        System.out.println("————————————————————————————————————作者配置——————————————————————————————————————");
        System.out.println("输入作者名:");
        String Author = scanner.next();


        String JDBC_URL = "jdbc:mysql://localhost:3306/"+databasename+"?useSSL=true&useUnicode=UTF-8&serverTimezone=Asia/Shanghai";
        //获取当前工程路径(这里无需修改)
        String projectPath = System.getProperty("user.dir");

        /**
         * 1.数据库配置(设置数据源)
         配置数据库连接以及需要使用的字段
         */
        DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(JDBC_URL, JDBC_USER_NAME, JDBC_PASSWORD)
                .dbQuery(new MySqlQuery())
                .typeConvert(new MySqlTypeConvert())
                .keyWordsHandler(new MySqlKeyWordsHandler());


        //创建对象
        FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);


        /**
         * 2.全局配置
         */
        fastAutoGenerator.globalConfig(
                globalConfigBuilder -> globalConfigBuilder
                        .fileOverride()     // 覆盖已生成文件
                        .disableOpenDir()   // 不打开生成文件目录
                        .outputDir(projectPath + "/src/main/java") // 指定输出目录,注意斜杠的表示
                        .author(Author) // 设置注释的作者
                        .commentDate("yyyy-MM-dd HH:mm:ss") // 设置注释的日期格式
                        .dateType(DateType.TIME_PACK)   // 使用java8新的时间类型
                        .enableSwagger()    // 开启swagger文档
        )

        /**
         日期类型 DateType
         DateType.ONLY_DATE 使用 java.util.date包下的 Date
         DateType.SQL_PACK 使用 java.sql包下的 Date
         DateType.TIME_PACK   因为会使用 java.time.LocalDateTime jdk1.8以上才支持  (推荐使用)
         */


        /**
         * 3.包配置
         */
        .packageConfig(
                packageConfigBuilder -> packageConfigBuilder
                        .parent(PACKAGE_NAME)   // 设置父包名
                        .moduleName(MODULE_NAME) // 设置父包模块名
                        .entity("entity") // 设置MVC下各个模块的包名
                        .mapper("mapper")
                        .service("service")
                        .serviceImpl("service.impl")
                        .controller("controller")
                        .xml("mapper.xml") // 设置XML资源文件的目录
        )

        /**
         * 4.模板配置
         */
        /*
        .templateConfig(
                templateConfigBuilder -> templateConfigBuilder
                        .disable(TemplateType.ENTITY)   // 禁用模板
                        .entity("/templates/entity.java")   // 设置实体模板路径(JAVA)
                        .service("/templates/service.java") // 设置service模板路径
                        .serviceImpl("/templates/serviceImpl.java") // 设置serviceImpl模板路径
                        .mapper("/templates/mapper.java")   // 设置mapper模板路径
                        .xml("/templates/mapper.xml")   // 设置mapperXml模板路径
                        .controller("/templates/controller.java")   // 设置controller模板路径
        );
        */

        /**
         * 5.注入配置 TODO
         */


        /**
         * 6.策略配置
         */
        .strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder
                        .enableCapitalMode()    // 开启大写命名
                        .enableSkipView()   // 开启跳过视图
                        .disableSqlFilter() // 禁用sql过滤
                        .addInclude(TBL_NAMES)  // 设置需要生成的表名
                        .addTablePrefix(TABLE_PREFIX)   // 设置过滤表前缀
        )


        /**
         * 6.1 Entity策略配置
         */
        .strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.entityBuilder()
                        .enableTableFieldAnnotation()   // 生成实体时生成字段的注解,包括@TableId注解等---
                        .naming(NamingStrategy.underline_to_camel)  // 数据库表和字段映射到实体的命名策略,为下划线转驼峰
                        .columnNaming(NamingStrategy.underline_to_camel)
                        .idType(IdType.AUTO)    // 全局主键类型为AUTO(自增)
                        .enableLombok() // 支持lombok开启注解
                        .logicDeleteColumnName("deleted")   // 逻辑删除字段名(数据库)
                        .logicDeletePropertyName("deleted") // 逻辑删除属性名(实体)
                        .addTableFills(new Column("create_time", FieldFill.INSERT)) // 自动填充配置  create_time  update_time 两种方式
                        .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
                        .versionColumnName("version")   // 开启乐观锁
                        .disableSerialVersionUID()  // 禁用生成 serialVersionUID,默认值:true
                        .enableChainModel() // 开启实体类链式编程
                        .formatFileName("%sEntity") // 实体名称格式化为XXXEntity   formatFileName("%sEntity")
        )

        /**
         * 6.2 Controller策略配置
         */
        .strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder()
                        .enableRestStyle()  // 开启生成@RestController控制器
                        .enableHyphenStyle()    // 开启驼峰转连字符 localhost:8080/user_list
        )

        /**
         * 6.3 Service策略配置
         格式化service接口和实现类的文件名称,去掉默认的ServiceName前面的I ----
         */
        .strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.serviceBuilder()
                        .formatServiceFileName("%sService")
                        .formatServiceImplFileName("%sServiceImpl"))

        /**
         * 6.4 Mapper策略配置
         格式化 mapper文件名,格式化xml实现类文件名称
         */
        .strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.mapperBuilder()
                        .enableMapperAnnotation()   // 开启 @Mapper 注解
                        .formatMapperFileName("%sMapper")
                        .formatXmlFileName("%sMapper"))

        /** 7.生成代码
         *
         */
        // 默认的是Velocity引擎模板
        .execute();
    }
}

具体参数记得看官网!

如何使用? 很高兴为您解答这个问题。为了使用MyBatis-Plus自动生成代码模板Controller,您需要遵循以下步骤: 1. 安装MyBatis-Plus插件。您可以在Maven中添加以下代码来添加MyBatis-Plus依赖项: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> </dependency> ``` 2. 根据您的需要配置MyBatis-Plus。您可以在application.properties文件中添加以下配置: ```properties # 数据库连接 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://your-database-url:3306/your-database-name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC spring.datasource.username=your-database-username spring.datasource.password=your-database-password # MyBatis-Plus配置 mybatis-plus.mapper-locations=classpath:mapper/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity ``` 3. 在您的实体类中添加需要映射的数据库表。对于每个表,需要创建一个Java类,用于映射表中的数据。您可以使用MyBatis-Plus提供的注解来配置主键和字段的映射: ```java @Data @TableName("user") // 表名 public class User { @TableId(value = "id", type = IdType.AUTO) // 主键 private Long id; @TableField("name") // 字段 private String name; // 省略其他字段 } ``` 4. 使用MyBatis-Plus代码生成器生成代码MyBatis-Plus提供了一个代码生成器,该生成器可以根据您的实体类和数据库表自动生成代码。您可以使用以下命令启动代码生成器: ```java import com.baomidou.mybatisplus.generator.AutoGenerator; public class CodeGenerator { public static void main(String[] args) { AutoGenerator mpg = new AutoGenerator(); // 定义包名和文件路径 // ... // 配置数据源 // ... // 配置生成策略 // ... // 配置模板 // ... mpg.execute(); } } ``` 5. 完成后,您将在指定的文件夹中看到生成的代码,包括实体类、Mapper接口、XML文件和Service类。 希望这能帮到您!如果您有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值