• SpringBoot整合mybatis-plus并实现代码自动生成


    1、引入maven

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.11</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.2.0</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>3.2.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>2.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.20</version>
            </dependency>

    application.yml 增加

    mybatis-plus:
      #扫描mapper文件所在位置
      mapper-locations: classpath*:mapper/**/*Mapper.xml
      #可以指定实体类所在包路径
      typeAliasesPackage: com.rnce.model
      global-config:
        banner: false
        db-config:
          # 主键类型 0:数据库ID自增 1.未定义 2.用户输入 3 id_worker 4.uuid 5.id_worker字符串表示
          id-type: AUTO
          #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
          field-strategy: NOT_NULL
          # 默认数据库表下划线命名
          table-underline: true
    #  configuration:
    #    map-underscore-to-camel-case: false
    #    cache-enabled: true #配置的缓存的全局开关
    #    lazyLoadingEnabled: true #延时加载的开关
    #    multipleResultSetsEnabled: true #开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性
    #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用
    
    spring:
      #DATABASE CONFIG
      datasource:
        #driver-class-name: com.mysql.jdbc.Driver
        #driver-class-name: com.p6spy.engine.spy.P6SpyDriver
        driverClassName: com.mysql.cj.jdbc.Driver
        username: dsk
        password: Hz56
        url: jdbc:mysql://106.103:3306/dwk?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC
        type: com.alibaba.druid.pool.DruidDataSource   #这里是配置druid连接池,以下都是druid的配置信息
        druid:
          # 初始连接数
          initialSize: 5
          # 最小连接池数量
          minIdle: 10
          # 最大连接池数量
          maxActive: 20
          # 配置获取连接等待超时的时间
          maxWait: 60000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 60000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 300000
          # 配置一个连接在池中最大生存的时间,单位是毫秒
          maxEvictableIdleTimeMillis: 900000
          # 配置检测连接是否有效
          testWhileIdle: true
          validationQuery: SELECT 1 FROM DUAL
          testOnBorrow: false
          testOnReturn: false
          webStatFilter:
            enabled: true
          statViewServlet:
            enabled: true
            # 设置白名单,不填则允许所有访问
            allow:
            url-pattern: /druid/*
            # 控制台管理用户名和密码
            login-username:
            login-password:
          filter:
            stat:
              enabled: true
              # 慢SQL记录
              log-slow-sql: true
              slow-sql-millis: 1000
              merge-sql: true
            wall:
              config:
                multi-statement-allow: true

    启动器上增加 要把Mapper接口文件的包扫描进去

    代码生成类

    CodeGenerator.java

    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、创建代码生成器
            AutoGenerator mpg = new AutoGenerator();
    
            // 2、全局配置
            GlobalConfig gc = new GlobalConfig();
            //获取工作目录
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            //作者
            gc.setAuthor("yvioo");
            //生成后是否打开资源管理器
            gc.setOpen(false);
            //重新生成时文件是否覆盖
            gc.setFileOverride(false);
            //去掉Service接口的首字母
            gc.setServiceName("%sService");
            gc.setIdType(IdType.AUTO); //主键策略
            gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
            gc.setSwagger2(false);//开启Swagger2模式
    
            mpg.setGlobalConfig(gc);
    
            // 3、数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://1003:3306/mrsc?serverTimezone=GMT%2B8");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("mc");
            dsc.setPassword("Hz56");
            dsc.setDbType(DbType.MYSQL);
            mpg.setDataSource(dsc);
    
            // 4、包配置
            PackageConfig pc = new PackageConfig();
            //模块名
            pc.setModuleName(null);
            //指定生成的根目录
            pc.setParent("com.test.cms.mybatisplus");
    
            //以下设置的包名要在上面的目录下
    
            //控制器的包名
            pc.setController("controller");
            //实体类的包名
            pc.setEntity("entity");
    
            pc.setService("service");
            //实现类的包名
            pc.setServiceImpl("service.impl");
            //映射文件的包名
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
    
            // 5、策略配置
            StrategyConfig strategy = new StrategyConfig();
    
            //设置要生成的代码表名
            strategy.setInclude("mrevice");
    
            //数据库表映射到实体的命名策略
            strategy.setNaming(NamingStrategy.underline_to_camel);
    
            //生成实体时去掉表前缀
            strategy.setTablePrefix(pc.getModuleName() + "_");
    
            //数据库表字段映射到实体的命名策略
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            // lombok 模型 @Accessors(chain = true) setter链式操作
            strategy.setEntityLombokModel(true);
    
    
    
            //restful api风格控制器
            strategy.setRestControllerStyle(true);
    
            //url中驼峰转连字符
            strategy.setControllerMappingHyphenStyle(true);
    
            mpg.setStrategy(strategy);
    
            // 6、执行
            mpg.execute();
        }
    }
    -----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------ (蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
  • 相关阅读:
    搭建web攻防环境
    远程控制
    网络攻击
    论文翻译:《PRIMES is in P》——素性测试的确定性多项式时间算法研究
    从Fouier级数到DCT
    同态加密简要概述
    杂谈:探究副词“有点”用于修饰形容词和动词的使用范围
    题解:洛谷P2055/[ZJOI2009] 假期的宿舍(匈牙利算法)
    笔记:二部图最大匹配的匈牙利算法
    杂谈:AI Intro课程作业——卷积神经网络练练手之MNIST数据集
  • 原文地址:https://www.cnblogs.com/pxblog/p/14445162.html
Copyright © 2020-2023  润新知