目 录CONTENT

文章目录

商城-代码生成器

zhouzz
2024-10-02 / 0 评论 / 0 点赞 / 6 阅读 / 23123 字
温馨提示:
本文最后更新于 2024-10-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、准备

准备mysql-8.x。

2、项目搭建

2.1 项目依赖

<dependencies>
    <!-- 使用mybatis_plus的代码生成器-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-generator</artifactId>
        <version>3.4.1</version>
    </dependency>
    <!-- velocity模板引擎-->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.3</version>
    </dependency>
    <!-- 数据库驱动包管理 -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.32</version>
    </dependency>
    <!-- mybatis plus 管理 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.2</version>
    </dependency>

    <!-- 非必须的,只是在项目中不让生成的代码编译异常 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

2.2 java代码

import com.baomidou.mybatisplus.annotation.IdType;
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.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CodeGenerator {

    public static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
    public static final String URL = "jdbc:mysql://192.168.44.100:3306/mall_all?useUnicode=true&useSSL=false&characterEncoding=utf8";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "123456";
    public static final String AUTHOR = "zhouzz";
    public static final String PARENT_PACKAGE = "com.mall.cloud";
    public static final String MODULE_NAME = "user";

    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");
        projectPath = projectPath + "/mall-zcodegen";
        String outputDir = projectPath + "/src/main/java";
        String xmlPath = projectPath + "/src/main/resources" + "/mapper";

        //1.获取代码生成器的对象
        AutoGenerator autoGenerator = new AutoGenerator();

        //设置数据库相关配置
        DataSourceConfig dataSource = new DataSourceConfig();
        dataSource.setDriverName(DRIVER_NAME);
        dataSource.setUrl(URL);
        dataSource.setUsername(USERNAME);
        dataSource.setPassword(PASSWORD);
        autoGenerator.setDataSource(dataSource);

        //设置全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir(outputDir);
        //设置生成完毕后是否打开生成代码所在的目录
        globalConfig.setOpen(false);
        //重新生成时文件是否覆盖 一般不覆盖我们的代码
        globalConfig.setFileOverride(false);
        //设置作者
        globalConfig.setAuthor(AUTHOR);
        //设置是否覆盖原始生成的文件
        globalConfig.setFileOverride(true);
        //设置Service接口名,%s为占位符,指代模块名称
        globalConfig.setServiceName("%sService");
        //设置数据层接口名,%s为占位符,指代模块名称
        globalConfig.setMapperName("%sMapper");
        //开启Swagger2模式
        globalConfig.setSwagger2(true);
        //设置Id生成策略
        globalConfig.setIdType(IdType.ASSIGN_ID);
        //DateType.ONLY_DATE 表示使用 java.util.Date 类型作为日期类型,datetime->java.util.Date
        globalConfig.setDateType(DateType.ONLY_DATE);

        autoGenerator.setGlobalConfig(globalConfig);

        //设置包名相关配置
        PackageConfig packageInfo = new PackageConfig();
        //设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
        packageInfo.setParent(PARENT_PACKAGE);
        packageInfo.setModuleName(MODULE_NAME);
        //设置实体类包名
        packageInfo.setEntity("domain");
        //设置数据层包名
        packageInfo.setMapper("mapper");

        autoGenerator.setPackageInfo(packageInfo);

        //策略设置
        StrategyConfig strategyConfig = new StrategyConfig();
        //设置当前参与生成的表名,参数为可变参数
        strategyConfig.setInclude("user");
        //设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名  例如: User = tbl_user - tbl_
        strategyConfig.setTablePrefix("t_");
        //数据库表映射到实体的命名策略 不用改
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        //设置是否启用Rest风格
        strategyConfig.setRestControllerStyle(true);
        //设置乐观锁字段名
        //strategyConfig.setVersionFieldName("version");
        //设置逻辑删除字段名
        //strategyConfig.setLogicDeleteFieldName("deleted");
        //设置是否启用lombok
        strategyConfig.setEntityLombokModel(true);
        //restful api风格控制器
        strategyConfig.setRestControllerStyle(true);
        //url中驼峰转连字符
        strategyConfig.setControllerMappingHyphenStyle(true);

        //2.执行生成操作
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.execute();
    }
}

2.2 配置对应元素

根据上面的代码,配置对应的数据库连接,和生成的表即可。

3.generator-ui

上面的代码生成器需要手动填写表信息,这样不灵活。那么是否有界面支持呢。

下面就轮到 generator-ui。

3.1 依赖

<dependencies>
    <dependency>
        <groupId>com.github.davidfantasy</groupId>
        <artifactId>mybatis-plus-generator-ui</artifactId>
        <version>2.0.5</version>
    </dependency>
    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.31</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
</dependencies>

java代码

import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;

public class GeneratorUiServer {

    public static final int SERVER_PORT = 8068;
    public static final String MYSQL_IP = "192.168.44.100";
    public static final String MYSQL_PORT = "3306";
    public static final String MYSQL_DATABASE = "pmall";
    public static final String MYSQL_USERNAME = "root";
    public static final String MYSQL_PASSWORD = "123456";
    private static final String TABLE_PREFIX = "t_";
    public static final String BASE_PACKAGE = "com.mall.cloud";

    public static void main(String[] args) {
        String url = "jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        url = String.format(url, MYSQL_IP, MYSQL_PORT, MYSQL_DATABASE);
        GeneratorConfig config = GeneratorConfig.builder()
                .jdbcUrl(url)
                .userName(MYSQL_USERNAME)
                .password(MYSQL_PASSWORD)
                .driverClassName("com.mysql.cj.jdbc.Driver")
                // 数据库schema,MySQL,PGSQL,ORACLE,DB2类型的数据库需要指定
                //.schemaName("myBusiness")
                // 如果需要修改entity及其属性的命名规则,以及自定义各类生成文件的命名规则,
                // 可自定义一个NameConverter实例,覆盖相应的名称转换方法,详细可查看该接口的说明:
                .nameConverter(new NameConverter() {
                    /**
                     * 自定义Service类文件的名称规则
                     */
                    @Override
                    public String serviceNameConvert(String tableName) {
                        return this.entityNameConvert(tableName, TABLE_PREFIX) + "Service";
                    }

                    /**
                     * 自定义Controller类文件的名称规则
                     */
                    @Override
                    public String controllerNameConvert(String tableName) {
                        return this.entityNameConvert(tableName, TABLE_PREFIX) + "Controller";
                    }
                })
                //所有生成的java文件的父包名,后续也可单独在界面上设置
                .basePackage(BASE_PACKAGE)
                .port(SERVER_PORT)
                .build();

        MybatisPlusToolsApplication.run(config);
    }
}

3.3 测试

访问 http://localhost:8068 就可以看到对应的 UI界面了。

界面操作都是傻瓜式的就不啰嗦了。

4.小结

0

评论区