• springboot MP代码生成器


    1、需要的依赖和版本号(我这个是项目完成后的全部依赖,只参照需要的依赖即可)

    <?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>
        <modules>
            <module>service</module>
            <module>common</module>
            <module>infrastructure</module>
        </modules>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.stu</groupId>
        <artifactId>edu_parent</artifactId>
        <packaging>pom</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>edu_parent</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
            <mybatis-plus.version>3.4.0</mybatis-plus.version>
            <velocity.version>2.0</velocity.version>
            <swagger.version>2.9.2</swagger.version>
            <aliyun.oss.version>3.1.0</aliyun.oss.version>
            <jodatime.version>2.10.6</jodatime.version>
            <commons-fileupload.version>1.3.1</commons-fileupload.version>
            <commons-io.version>2.6</commons-io.version>
            <commons-lang.version>3.9</commons-lang.version>
            <httpclient.version>4.5.1</httpclient.version>
            <jwt.version>0.9.1</jwt.version>
            <aliyun-java-sdk-core.version>4.3.3</aliyun-java-sdk-core.version>
            <aliyun-java-sdk-kms.version>2.10.1</aliyun-java-sdk-kms.version>
            <aliyun-java-sdk-vod.version>2.15.10</aliyun-java-sdk-vod.version>
            <aliyun-sdk-vod-upload.version>1.4.11</aliyun-sdk-vod-upload.version>
            <fastjson.version>1.2.28</fastjson.version>
            <gson.version>2.8.2</gson.version>
            <json.version>20170516</json.version>
            <commons-dbutils.version>1.6</commons-dbutils.version>
            <canal.client.version>1.1.4</canal.client.version>
            <docker.image.prefix>zx</docker.image.prefix>
            <alibaba.easyexcel.version>2.2.6</alibaba.easyexcel.version>
            <apache.xmlbeans.version>3.1.0</apache.xmlbeans.version>
            <cloud-alibaba.version>2.2.1.RELEASE</cloud-alibaba.version>
            <spring-cloud-starter-gateway>2.2.0.RELEASE</spring-cloud-starter-gateway>
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <!--Spring Cloud-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR8</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <!--mybatis-plus 持久层-->
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-boot-starter</artifactId>
                    <version>${mybatis-plus.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-generator</artifactId>
                    <version>${mybatis-plus.version}</version>
                </dependency>
    
                <!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
                <dependency>
                    <groupId>org.apache.velocity</groupId>
                    <artifactId>velocity-engine-core</artifactId>
                    <version>${velocity.version}</version>
                </dependency>
    
                <!--swagger-->
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger2</artifactId>
                    <version>${swagger.version}</version>
                </dependency>
    
                <!--swagger ui-->
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger-ui</artifactId>
                    <version>${swagger.version}</version>
                </dependency>
    
                <!--aliyunOSS-->
                <dependency>
                    <groupId>com.aliyun.oss</groupId>
                    <artifactId>aliyun-sdk-oss</artifactId>
                    <version>${aliyun.oss.version}</version>
                </dependency>
    
                <!--日期时间工具-->
                <dependency>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                    <version>${jodatime.version}</version>
                </dependency>
    
                <!--文件上传-->
                <dependency>
                    <groupId>commons-fileupload</groupId>
                    <artifactId>commons-fileupload</artifactId>
                    <version>${commons-fileupload.version}</version>
                </dependency>
    
                <!--commons-io-->
                <dependency>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                    <version>${commons-io.version}</version>
                </dependency>
    
                <!--commons-lang3-->
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                    <version>${commons-lang.version}</version>
                </dependency>
    
                <!--httpclient-->
                <dependency>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpclient</artifactId>
                    <version>${httpclient.version}</version>
                </dependency>
    
                <!-- JWT -->
                <dependency>
                    <groupId>io.jsonwebtoken</groupId>
                    <artifactId>jjwt</artifactId>
                    <version>${jwt.version}</version>
                </dependency>
    
                <!--aliyun-->
                <dependency>
                    <groupId>com.aliyun</groupId>
                    <artifactId>aliyun-java-sdk-core</artifactId>
                    <version>${aliyun-java-sdk-core.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.aliyun</groupId>
                    <artifactId>aliyun-java-sdk-kms</artifactId>
                    <version>${aliyun-java-sdk-kms.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.aliyun</groupId>
                    <artifactId>aliyun-java-sdk-vod</artifactId>
                    <version>${aliyun-java-sdk-vod.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.aliyun</groupId>
                    <artifactId>aliyun-sdk-vod-upload</artifactId>
                    <version>${aliyun-sdk-vod-upload.version}</version>
                </dependency>
    
                <!--            json-->
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>fastjson</artifactId>
                    <version>${fastjson.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>org.json</groupId>
                    <artifactId>json</artifactId>
                    <version>${json.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.google.code.gson</groupId>
                    <artifactId>gson</artifactId>
                    <version>${gson.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>commons-dbutils</groupId>
                    <artifactId>commons-dbutils</artifactId>
                    <version>${commons-dbutils.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.alibaba.otter</groupId>
                    <artifactId>canal.client</artifactId>
                    <version>${canal.client.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>easyexcel</artifactId>
                    <version>${alibaba.easyexcel.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>org.apache.xmlbeans</groupId>
                    <artifactId>xmlbeans</artifactId>
                    <version>${apache.xmlbeans.version}</version>
                </dependency>
    
            </dependencies>
        </dependencyManagement>
    
    <!--    <build>-->
    <!--        <plugins>-->
    <!--            <plugin>-->
    <!--                <groupId>org.springframework.boot</groupId>-->
    <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
    <!--            </plugin>-->
    <!--        </plugins>-->
    <!--    </build>-->
    
    </project>

    2、java代码(重点在这里)

    package generator;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.annotation.FieldFill;
    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.po.TableFill;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import org.junit.jupiter.api.Test;
    import java.util.ArrayList;
    
    public class CodeGenerator {
    
        @Test
        public void genCode() {
            // 前缀
            String prefix = "stu_";
            String moduleName = "edu";
    
            // 1、创建代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 2、全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor("stu");
            gc.setOpen(false); // 生成后是否打开资源管理器
            gc.setFileOverride(false); // 重新成时文件是否覆盖
            gc.setServiceName("%sService");    // 去掉Service接口的首字母I
            gc.setIdType(IdType.ASSIGN_ID); // 主键策略
            gc.setDateType(DateType.ONLY_DATE);// 定义生成的实体类中日期类型
            gc.setSwagger2(true);// 开启 Swagger2 模式
            mpg.setGlobalConfig(gc);
    
            // 3、数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/" + prefix + moduleName + "?serverTimezone=UTC");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("root");
            dsc.setDbType(DbType.MYSQL);
            mpg.setDataSource(dsc);
    
            // 4、包配置
            PackageConfig pc = new PackageConfig();
            pc.setParent("com.stu.service");
            pc.setModuleName(moduleName); //模块名
            pc.setController("controller");
            pc.setEntity("entity");
            pc.setService("service");
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
    
            // 5、策略配置
            StrategyConfig strategy = new StrategyConfig();
            // 生成哪些表
            strategy.setInclude("edu_chapter","edu_comment","edu_course_description","edu_course_collect","edu_course_description","edu_video" );
            // 数据库表映射到实体的命名策略
            strategy.setNaming(NamingStrategy.underline_to_camel);
            // 设置表前缀不生成
            strategy.setTablePrefix(moduleName + "_");
            // 数据库表字段映射到实体的命名策略
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            // lombok 模型 @Accessors(chain = true) setter链式操作
            strategy.setEntityLombokModel(true);
            // 逻辑删除字段名
            strategy.setLogicDeleteFieldName("is_deleted");
            // 去掉布尔值的is_前缀
            strategy.setEntityBooleanColumnRemoveIsPrefix(true);
    
            // 自动填充
            TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
            TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
            ArrayList<TableFill> tableFills = new ArrayList<>();
            tableFills.add(gmtCreate);
            tableFills.add(gmtModified);
            strategy.setTableFillList(tableFills);
    
            // restful api风格控制器
            strategy.setRestControllerStyle(true);
            // url 中驼峰转连字符
            strategy.setControllerMappingHyphenStyle(true);
            mpg.setStrategy(strategy);
    
            // 6、执行
            mpg.execute();
        }
    
    }

    3、配置SQL执行性能分析插件

    /**
         * SQL 执行性能分析插件
         * 开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长
         */
    @Bean
    @Profile({"dev","test"})// 设置 dev test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(1000);//ms,超过此处设置的ms则sql不执行
        performanceInterceptor.setFormat(true);
        return performanceInterceptor;
    }
    4、统一返回的json时间格式
    默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差了八个小时
    在application.properties中设置
    server:
      port: 9110
    
    spring:
      profiles:
        # 环境设置
        active: dev
    
      application:
        # 服务名
        name: service-edu
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
    
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/stu_edu?serverTimezone=Asia/Shanghai
        username: root
        password: study
      redis: # redis 配置
        host: 127.0.0.1
        port: 6379
        database: 0
        password:  #默认为空
        lettuce:
          pool:
            max-active: 20  #最大连接数,负值表示没有限制,默认8
            max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1
            max-idle: 8     #最大空闲连接,默认8
            min-idle: 0     #最小空闲连接,默认0
      # 响应 json 的全局时间格式
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: GMT+8
    
    
    # mybatis 日志设置
    mybatis-plus:
      configuration:
        # 日志
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      mapper-locations: classpath:/mapper/*.xml
      global-config:
        db-config:
          logic-delete-field: isDeleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
          logic-delete-value: 1 # 逻辑已删除值(默认为 1)
          logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
    
    
    #开启熔断机制
    feign:
      hystrix:
        enabled: true
    # 设置hystrix超时时间,默认1000ms,1秒
    hystrix:
      command:
        default:
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: 6000
    
    
    #logging:
    #  level:
    #    root: info
  • 相关阅读:
    window在文件管理器中打开命令行窗口
    js的事件机制
    ext-css
    HTML防止input回车提交表单
    myeclipse调试代码的时候看不到变量的值和jdk源码重新编译
    MANIFEST.MF 文件内容完全详解
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'dll.msvcrt'
    JNA知识点
    cookie 和session 的区别
    6- js监听输入框值的即时变化onpropertychange、oninput
  • 原文地址:https://www.cnblogs.com/konglxblog/p/16793936.html
Copyright © 2020-2023  润新知