SpringBoot代码自动生成小工具

本文介绍了如何在Java项目中使用MyBatis-Plus的代码生成工具,通过自动化创建实体类、DAO、Service和Controller层的代码,显著提升数据库表设计后的编码效率。作者还分享了所需的Maven依赖和配置方法,以及实际操作效果的展示。
摘要由CSDN通过智能技术生成

     背景

        研发工作中,通常需要根据需求来进行数据库表设计,而在表设计之后,进行代码实现时,最繁琐枯躁的就是实体类、初始dao,service,controller层的的代码编写了。这些工作没什么技术含量,不过是根据数据库中的属性来建立java文件而己,但是却很费工夫。有经验的程序猿们都知道运用各种工具来自动生成这类代码,今天我就介绍一款我常用的代码生成工具类。

     实践

        1、引入maven依赖

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

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

        <!--swagger集成 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!--数据库驱动 -->
        <dependency>
            <groupId>com.jdbc.dm</groupId>
            <artifactId>DmJdbcDriver18</artifactId>
            <version>1.0</version>
        </dependency>

        2、工具类

public class CodeGenerationUtils {
    /**
     * 需要生成的表名
     */
    private static final String[] TABLE_NAMES = new String[]{"sys_user"};
    /**
     * 文件路径
     */
    public static final String PROJECT_PATH = "E:\\study\\";
    /**
     * 项目名
     */
    public static final String PROJECT_NAME = "code-generation";

    /**
     * 数据源配置
     */
    public static final String DATA_SOURCE_URL = "jdbc:dm://192.168.5.97:5238/LEIXI";
    public static final String DATA_SOURCE_USERNAME = "LEIXI";
    public static final String DATA_SOURCE_PASSWORD = "leixi123";
    public static final String DATA_SOURCE_DRIVERNAME = "dm.jdbc.driver.DmDriver";

    /**
     * @MethodName: main
     * @Description: 代码生成器
     **/
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setDataSource(getDataSourceConfigInfo());
        autoGenerator.setGlobalConfig(getGlobalConfigInfo());
        autoGenerator.setPackageInfo(getPackageConfigInfo());
        autoGenerator.setStrategy(getStrategyConfigInfo(TABLE_NAMES));
        autoGenerator.execute();
    }

    /**
     * @MethodName: getDataSourceConfigInfo
     * @Description: 数据源配置
     **/
    public static DataSourceConfig getDataSourceConfigInfo() {
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(DATA_SOURCE_URL);
        dataSourceConfig.setUsername(DATA_SOURCE_USERNAME);
        dataSourceConfig.setPassword(DATA_SOURCE_PASSWORD);
        dataSourceConfig.setDbType(DbType.DM);
        dataSourceConfig.setDriverName(DATA_SOURCE_DRIVERNAME);
        return dataSourceConfig;
    }

    /**
     * @MethodName: getGlobalConfigInfo
     * @Description: 全局配置
     **/
    public static GlobalConfig getGlobalConfigInfo() {
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(PROJECT_PATH + PROJECT_NAME + "/src/main/java/");
        globalConfig.setAuthor("leixi");
        globalConfig.setOpen(false);
        globalConfig.setSwagger2(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setBaseResultMap(true);
        globalConfig.setActiveRecord(false);
        globalConfig.setFileOverride(true);
        globalConfig.setServiceName("%sService");
        return globalConfig;
    }

    /**
     * @MethodName: getPackageConfigInfo
     * @Description: 包配置
     **/
    public static PackageConfig getPackageConfigInfo() {
        PackageConfig packageConfig = new PackageConfig();
        //包名
        packageConfig.setParent("com.leixi.common");
        // 模块名
        packageConfig.setModuleName(null);
        // 实体类的包名
        packageConfig.setEntity("entity");
        // dao层的包名
        packageConfig.setMapper("dao");
        return packageConfig;



    }

    /**
     * @MethodName: getStrategyConfigInfo
     * @Description: 策略配置
     **/
    public static StrategyConfig getStrategyConfigInfo(String... tableNames) {
        StrategyConfig strategyConfigInfo = new StrategyConfig();
        strategyConfigInfo.setCapitalMode(true);
        strategyConfigInfo.setNaming(NamingStrategy.underline_to_camel);
        //下划线转驼峰命名
        strategyConfigInfo.setColumnNaming(NamingStrategy.no_change);
        //需要生成的的表名,多个表名传数组
        strategyConfigInfo.setInclude(tableNames);
        //设置逻辑删除字段
        strategyConfigInfo.setLogicDeleteFieldName("isDelete");
        //使用lombok
        strategyConfigInfo.setEntityLombokModel(true);
        //设置表格前缀
        strategyConfigInfo.setTablePrefix("");
        //rest风格
        strategyConfigInfo.setRestControllerStyle(true);
        return strategyConfigInfo;
    }
}

        3、测试

        运行前,我的项目是这样的:

        点击工具类,运行main()方法后,我的项目是这样的:

        这个工具是我从同事那里要来的,它对于研发工作效率的提升是毋庸置疑。我当时比较好奇的是,同事是怎么得到这种工具的?打死我也不相信这是他自研的。后来在我的严刑拷打下,他才透露说是自己从网上抄来了,也不知道抄的哪位大佬。不管是谁,雷袭在这里先行谢过了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用MyBatis Generator来自动生成代码。MyBatis Generator是一个基于MyBatis的代码生成器,可以根据数据库表结构自动生成对应的Java实体类、Mapper接口和XML映射文件。 使用MyBatis Generator需要以下步骤: 1. 编写MyBatis Generator配置文件(generatorConfig.xml); 2. 运行MyBatis Generator。 以下是一个简单的generatorConfig.xml配置文件示例: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="context1"> <!-- 数据库连接配置 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="root"> </jdbcConnection> <!-- 实体类生成配置 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> </javaModelGenerator> <!-- Mapper接口生成配置 --> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"> </sqlMapGenerator> <!-- Mapper XML映射文件生成配置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> </javaClientGenerator> <!-- 数据库表生成配置 --> <table tableName="user"></table> </context> </generatorConfiguration> ``` 运行MyBatis Generator的方式有多种,可以使用命令行工具、Maven插件或者IDEA插件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值