• 使用mybatis-plus的自动生成器生成代码


    第一步:打开网址spring.io,填写配置如下:

    点击generator,自动下载maven初始工程到本地。

    第二步:用eclipse或者idea导入项目。

    第三步:修改pom.xml文件,修改前后的pom.xml文件如下所示:

    (1)修改前的pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.2</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>net.mybatisplus</groupId>
        <artifactId>autogen</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>autogen</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    (2)修改后的pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.5.2</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>net.mybatisplus</groupId>
        <artifactId>autogen</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>autogen</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!--自动生成代码需要-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.25</version>
                <scope>runtime</scope>
            </dependency>
            <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.0</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    第四步:新增一个类,可以与AutogenApplication.java文件同一级。

    第五步:代码修改成如下的代码:

    package net.mybatisplus.autogen;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    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;
    
    public class CodeGenerator {
        public static void main(String[] args) {
            //1. 全局配置
            GlobalConfig config = new GlobalConfig();
            // 是否支持AR模式
            config.setActiveRecord(true)
                    .setAuthor("作者名字")
                    // 生成路径,最好使用绝对路径,window路径是不一样的
                    //TODO  TODO  TODO  TODO
                    .setOutputDir("/Users/lukairui/temp/demo_test02/src/main/java")
                    // 文件覆盖
                    .setFileOverride(true)
                    // 主键策略
                    .setIdType(IdType.AUTO)
                    .setDateType(DateType.ONLY_DATE)
                    // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的
                    .setServiceName("%sService")
                    //实体类结尾名称
                    .setEntityName("%sDO")
                    //生成基本的resultMap
                    .setBaseResultMap(true)
                    //不使用AR模式
                    .setActiveRecord(false)
                    //生成基本的SQL片段
                    .setBaseColumnList(true);
            //2. 数据源配置
            DataSourceConfig dsConfig = new DataSourceConfig();
            // 设置数据库类型
            dsConfig.setDbType(DbType.MYSQL)
                    .setDriverName("com.mysql.cj.jdbc.Driver")
                    //TODO  TODO  TODO  TODO
                    .setUrl("jdbc:mysql://127.0.0.1:3306/user?useSSL=false")
                    .setUsername("root")
                    .setPassword("xxxxx");
            //3. 策略配置globalConfiguration中
            StrategyConfig stConfig = new StrategyConfig();
            //全局大写命名
            stConfig.setCapitalMode(true)
                    // 数据库表映射到实体的命名策略
                    .setNaming(NamingStrategy.underline_to_camel)
                    //使用lombok
                    .setEntityLombokModel(true)
                    //使用restcontroller注解
                    .setRestControllerStyle(true)
                    // 生成的表, 支持多表一起生成,以数组形式填写
                    //TODO  TODO  TODO  TODO
                    .setInclude("user","address");
            //4. 包名策略配置
            PackageConfig pkConfig = new PackageConfig();
            pkConfig.setParent("net.xdclass")
                    .setMapper("mapper")
                    .setService("service")
                    .setController("controller")
                    .setEntity("model")
                    .setXml("mapper");
            //5. 整合配置
            AutoGenerator ag = new AutoGenerator();
            ag.setGlobalConfig(config)
                    .setDataSource(dsConfig)
                    .setStrategy(stConfig)
                    .setPackageInfo(pkConfig);
            //6. 执行操作
            ag.execute();
            System.out.println("======= Done 相关代码生成完毕  ========");
        }
    }

    注意,上面标红色的地方要做修改,修改成为自己对应的配置。

    重点说一下

    setParent("net.xdclass")

    这个会直接决定你生成的文件中package的前缀。

    我们做个简单测试:

    测试一:

    setParent("net.xdclass")

    生成结果:

    测试二:

    setParent("sys")

    生成结果:

    好了,介绍到这里,就没有更多了。大家按照我的步骤,运行一下就可以生成到对应的路径下了,然后根据自己的需要拷贝mapper、controller、service、model等。

    看自己需要取用。我一般不用自动生成的service层代码,不知道大家的喜好是怎么样的。因人而异,各取所需吧。

    谢谢阅读!

  • 相关阅读:
    C++实现双缓冲
    [python]初探socket
    HTTP 状态代码表示什么意思?
    今天安装了麒麟系统
    初学python类
    python 如何在一个for循环中遍历两个列表
    python中xrange和range的异同
    再学python类(终结篇)
    常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解
    原生JS实现瀑布流
  • 原文地址:https://www.cnblogs.com/lukairui/p/15032462.html
Copyright © 2020-2023  润新知