<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      mybatis-plus學(xué)習(xí)及使用

      什么是Mybatis-Plus

      MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。

      Mybatis-Plus的特性

      • 無侵入:只做增強(qiáng)不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
      • 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
      • 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求
      • 支持 Lambda 形式調(diào)用:通過 Lambda 表達(dá)式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯(cuò)
      • 支持主鍵自動生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
      • 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作
      • 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
      • 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
      • 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
      • 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
      • 內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時(shí)間,建議開發(fā)測試時(shí)啟用該功能,能快速揪出慢查詢
      • 內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作

      官方網(wǎng)站

      https://mybatis.plus/

      快速起步

      版本說明

      本文檔使用的是MyBatis-Plus v3.4.2

      準(zhǔn)備數(shù)據(jù)庫

      1、創(chuàng)建數(shù)據(jù)庫 mybatis-plus

      2、導(dǎo)入如下腳本

      DROP TABLE IF EXISTS USER;
      
      CREATE TABLE USER
      (
          id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
          NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
          age INT(11) NULL DEFAULT NULL COMMENT '年齡',
          email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
          PRIMARY KEY (id)
      ) DEFAULT CHARSET=UTF8;
      
      DELETE FROM USER;
      
      INSERT INTO USER (id, NAME, age, email) VALUES
      (1, 'Jone', 18, 'test1@baomidou.com'),
      (2, 'Jack', 20, 'test2@baomidou.com'),
      (3, 'Tom', 28, 'test3@baomidou.com'),
      (4, 'Sandy', 21, 'test4@baomidou.com'),
      (5, 'Billie', 24, 'test5@baomidou.com');

      創(chuàng)建SpringBoot項(xiàng)目

      image-20210214194324839

      image-20210214204244593

      image-20210214204330075

      image-20210214204402731

      image-20210214204506930

      導(dǎo)入依賴

      修改 pom.xml 文件

      <!-- MySql數(shù)據(jù)庫相關(guān)依賴 -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <!-- MyBatis-Plus相關(guān)依賴 -->
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>3.4.2</version>
      </dependency>

      配置數(shù)據(jù)源

      1、修改配置文件類型

      將 src/main/resources/application.properties 更改為 src/main/resources/application.yml

      2、添加如下配置

      server:
        port: 8080
      
      spring:
        datasource:
          username: root
          password: ok
          url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
          driver-class-name: com.mysql.cj.jdbc.Driver

      配置啟動類

      修改 com.yacon.mybatisplus.MybatisPlusApplication 類

      package com.yacon.mybatisplus;
      
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      @SpringBootApplication
       @MapperScan("com.yacon.mybatisplus.mapper")
      public class MybatisPlusApplication {
      
          public static void main(String[] args) {
              SpringApplication.run(MybatisPlusApplication.class, args);
          }
      
      }

      創(chuàng)建POJO類

      創(chuàng)建 com.yacon.mybatisplus.pojo.User 類

      package com.yacon.mybatisplus.pojo;
      
      import lombok.Data;
      
      @Data
      public class User {
          private Long id;
          private String name;
          private Integer age;
          private String email;
      }

      創(chuàng)建Mapper類

      創(chuàng)建 com.yacon.mybatisplus.mapper.UserMapper 接口

      package com.yacon.mybatisplus.mapper;
      
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.yacon.mybatisplus.pojo.User;
      
      public interface UserMapper extends BaseMapper<User> { }

      編寫測試方法

      1、修改 src/test/java/com/yacon/mybatisplus/MybatisPlusApplicationTests.java文件

      package com.yacon.mybatisplus;
      
      import com.yacon.mybatisplus.mapper.UserMapper;
      import com.yacon.mybatisplus.pojo.User;
      import org.junit.jupiter.api.Test;
      import org.springframework.boot.test.context.SpringBootTest;
      
      import javax.annotation.Resource;
      import java.util.List;
      
      @SpringBootTest
      class MybatisPlusApplicationTests {
      
          @Resource
          private UserMapper userMapper;
      
          /**
           * 查詢所有用戶列表
           */
          @Test
          public void testSelect(){
              List<User> users = userMapper.selectList(null);
              users.forEach(System.out::println);
          }
      }

      2、運(yùn)行測試

      image-20210214212054858

      日志輸出

      1、修改 src/main/resources/application.yml 配置文件,添加日志配置

      mybatis-plus:
        configuration:
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

      2、運(yùn)行測試

      image-20210214213849307

      基礎(chǔ)CRUD

      SELECT

      根據(jù)ID查詢

      1、添加測試方法

      /**
       * 查詢用戶信息
       */
      @Test
      public void testGetUserById(){
          User user = userMapper.selectById(5);
          if(null == user) {
              System.out.println("查詢失敗");
              return;
          }
          System.out.println(user.getId());
          System.out.println(user.getName());
          System.out.println(user.getAge());
          System.out.println(user.getEmail());
      }

      2、運(yùn)行測試

      image-20210214225751263

      查詢總條目數(shù)

      1、編寫測試方法

      /**
       * 查詢總條目數(shù)
       */
      @Test
      public void testGetUserCount(){
          Integer count = userMapper.selectCount(null);
          System.out.println(count);
      }

      2、運(yùn)行測試

      image-20210214230110223

      條件查詢

      1、編寫測試方法

      /**
       * 查詢年齡大于20歲的用戶
       */
      @Test
      public void testWhere(){
          QueryWrapper queryWrapper = new QueryWrapper();
          queryWrapper.gt("age",20);
      
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      2、運(yùn)行測試

      image-20210214230709005

      模糊查詢

      1、編寫測試方法

      /**
       * 查詢姓名包含 a 的用戶
       */
      @Test
      public void testLike(){
          QueryWrapper queryWrapper = new QueryWrapper();
          queryWrapper.like("name",'a');
      
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      2、運(yùn)行測試

      image-20210214231113125

      排序查詢

      1、添加測試方法

      /**
       * 查詢用戶列表,并按年齡逆序
       */
      @Test
      public void testOrder() {
          QueryWrapper queryWrapper = new QueryWrapper();
          queryWrapper.orderByDesc("age");
      
          List<User> users = userMapper.selectList(queryWrapper);
          users.forEach(System.out::println);
      }

      2、運(yùn)行測試

      image-20210214231344660

      INSERT

      配置主鍵生成策略

      1、確保數(shù)據(jù)表的主鍵列為自增列

      image-20210214221910994

      2、修改 com.yacon.mybatisplus.pojo.User 類

      @Data
      public class User {
         @TableId(type= IdType.AUTO)
          private Long id;
          private String name;
          private Integer age;
          private String email;
      }

      編寫測試方法

      1、添加測試方法

      /**
       * 插入用戶
       */
      @Test
      public void testInsert(){
          User user = new User();
          user.setName("張三");
          user.setAge(20);
          user.setEmail("zhangsan@mail.com");
      
          int result = userMapper.insert(user);
          System.out.println(result > 0 ? "插入成功" : "插入失敗");
          System.out.println("ID="+user.getId());
      }

      2、運(yùn)行測試

      image-20210214223925253

      image-20210214222918418

      UPDATE

      1、添加測試方法

      /**
       * 更新用戶
       */
      @Test
      public void testUpdate(){
          User user = new User();
          user.setId(6L);
          user.setName("zhangsan");
      
          int result = userMapper.updateById(user);
          System.out.println(result > 0 ? "修改成功" : "修改失敗");
      }

      2、運(yùn)行測試

      image-20210214224423638

      image-20210214224442123

      DELETE

      1、添加測試方法

      /**
       * 刪除用戶
       */
      @Test
      public void testDelete(){
          int result = userMapper.deleteById(6);
          System.out.println(result > 0 ? "刪除成功" : "刪除失敗");
      }

      2、運(yùn)行測試

      image-20210214225126087

      高級擴(kuò)展

      邏輯刪除

      邏輯刪除 是指,在刪除表中的某條數(shù)據(jù)時(shí)并不是真正的刪除,而是更改某個(gè)表字段的值來表示該條數(shù)據(jù)已被刪除

      修改數(shù)據(jù)表

      給 User 添加字段 deleted,并設(shè)置默認(rèn)值為 0

      ALTER TABLE `mybatis_plus`.`user` ADD COLUMN `deleted` INT(1) DEFAULT 0 NOT NULL AFTER `email`;

      修改實(shí)體類

      修改 com.yacon.mybatisplus.pojo.User 類

      @Data
      public class User {
          @TableId(type= IdType.AUTO)
          private Long id;
          private String name;
          private Integer age;
          private String email;
         @TableLogic
         private Integer deleted;
      }

      添加配置

      修改 src/main/resources/application.yml 文件

      mybatis-plus:
        configuration:
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
       global-config:
         db-config:
           logic-delete-field: deleted # 全局邏輯刪除的實(shí)體字段名
           logic-delete-value: 1 # 邏輯已刪除的值
           logic-not-delete-value: 0 # 邏輯未刪除的值

      運(yùn)行測試

      1、運(yùn)行 刪除用戶 測試方法

      image-20210214233300558

      image-20210214233319035

      2、運(yùn)行 查詢所有用戶列表 測試方法

      image-20210214233453679

      自動填充字段

      修改數(shù)據(jù)表

      給 user 表添加兩個(gè)字段 gmt-create 和 gmt-modified

      ALTER TABLE `mybatis_plus`.`user`   
        ADD COLUMN `gmt_create` DATETIME NULL  COMMENT '創(chuàng)建時(shí)間' AFTER `deleted`,
        ADD COLUMN `gmt_modified` DATETIME NULL  COMMENT '更新時(shí)間' AFTER `gmt_create`;

      image-20210215000407833

      修改實(shí)體類

      修改 com.yacon.mybatisplus.pojo.User 類

      @Data
      public class User {
          @TableId(type= IdType.AUTO)
          private Long id;
          private String name;
          private Integer age;
          private String email;
          @TableLogic
          private Integer deleted;
         @TableField(fill = FieldFill.INSERT)
         private Date gmtCreate;
         @TableField(fill = FieldFill.INSERT_UPDATE)
         private Date gmtModified;
      }

      編寫填充處理器

      創(chuàng)建 com.yacon.mybatisplus.handle.MyMetaObjectHandler 類

      package com.yacon.mybatisplus.handler;
      
      import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
      import org.apache.ibatis.reflection.MetaObject;
      import org.springframework.stereotype.Component;
      
      import java.time.LocalDateTime;
      import java.util.Date;
      
      @Component
      public class MyMetaObjectHandler implements MetaObjectHandler {
      
          @Override
          public void insertFill(MetaObject metaObject) {
              this.setFieldValByName("gmtCreate",new Date(), metaObject);
              this.setFieldValByName("gmtModified",new Date(), metaObject);
          }
      
          @Override
          public void updateFill(MetaObject metaObject) {
              this.setFieldValByName("gmtModified",new Date(), metaObject);
          }
      }

      運(yùn)行測試

      1、運(yùn)行 插入用戶 測試方法

      image-20210215001926063

      image-20210215001943222

      2、運(yùn)行 更新用戶 測試方法

      image-20210215002145083

      image-20210215002200304

      常用插件

      樂觀鎖

      在高并發(fā)的情況下,可能存在多個(gè)用戶同時(shí)修改一條數(shù)據(jù)的情況,為了讓某一用戶在修改數(shù)據(jù)時(shí)不被被人更新,這時(shí)就需要用樂觀鎖將數(shù)據(jù)進(jìn)行鎖定

      樂觀鎖實(shí)現(xiàn)方式

      • 取出記錄時(shí),獲取當(dāng)前version
      • 更新時(shí),帶上這個(gè)version
      • 執(zhí)行更新時(shí), set version = newVersion where version = oldVersion
      • 如果version不對,就更新失敗

      修改數(shù)據(jù)表

      給 user 表添加 version 字段 b

      ALTER TABLE `mybatis_plus`.`user`   
        ADD COLUMN `version` INT DEFAULT 1  NULL  COMMENT '樂觀鎖' AFTER `email`;

      image-20210215003720837

      修改實(shí)體類

      修改 com.yacon.mybatisplus.pojo.User 類

      @Data
      public class User {
          @TableId(type= IdType.AUTO)
          private Long id;
          private String name;
          private Integer age;
          private String email;
          @TableLogic
          private Integer deleted;
          @TableField(fill = FieldFill.INSERT)
          private Date gmtCreate;
          @TableField(fill = FieldFill.INSERT_UPDATE)
          private Date gmtModified;
         @Version
         private Integer version;
      }

      注冊插件

      1、創(chuàng)建 com.yacon.mybatisplus.config.MyBatisPlusConfig 類

      package com.yacon.mybatisplus.config;
      
      import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
      import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
      import org.mybatis.spring.annotation.MapperScan;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.transaction.annotation.EnableTransactionManagement;
      @Configuration
      @EnableTransactionManagement
      @MapperScan("com.yacon.mybatisplus.mapper")
      public class MyBatisPlusConfig {
      
          @Bean
          public MybatisPlusInterceptor mybatisPlusInterceptor(){
              MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
      
              // 注冊樂觀鎖插件
              interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
              return interceptor;
          }
      }
      

      2、修改 om.yacon.mybatisplus.MybatisPlusApplication 啟動類

      @SpringBootApplication
       @MapperScan("com.yacon.mybatisplus.mapper")
      public class MybatisPlusApplication {
          public static void main(String[] args) {
              SpringApplication.run(MybatisPlusApplication.class, args);
          }
      }

      運(yùn)行測試

      1、添加測試方法

      /**
       * 樂觀鎖測試
       */
      @Test
      public void testLocker() {
          // 模擬線程1
          User user1 = userMapper.selectById(7L);
          user1.setName("張三");
      
          // 模擬線程2插隊(duì)
          User user2 = userMapper.selectById(7L);
          user2.setName("李四");
          userMapper.updateById(user2);
      
          userMapper.updateById(user1);
      }

      2、運(yùn)行測試

      image-20210215010903772

      image-20210215010922409

      分頁查詢

      注冊分頁插件

      修改 com.yacon.mybatisplus.config.MyBatisPlusConfig 類

      注意注冊插件的順序,要先注冊 分頁插件,再注冊 樂觀鎖插件

      @Bean
      public MybatisPlusInterceptor mybatisPlusInterceptor(){
          MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
      
         // 注冊分頁插件
         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
      
          // 注冊樂觀鎖插件
          interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
      
          return interceptor;
      }

      添加測試方法

      修改 com.yacon.mybatisplus.MybatisPlusApplicationTests 測試類

      /**
       * 分頁查詢
       */
      @Test
      public void testPage(){
          long current = 1; // 當(dāng)前頁碼
          long size = 2; // 每頁顯示條目數(shù)
          Page<User> page = new Page<>(current,size);
      
          userMapper.selectPage(page, null);
      
          List<User> users = page.getRecords(); // 獲取數(shù)據(jù)列表
          users.forEach(System.out::println);
      }

      運(yùn)行測試

      image-20210215101147219

      性能分析

      SQL性能校驗(yàn)

      注冊插件

      修改 com.yacon.mybatisplus.config.MyBatisPlusConfig 類

      性能分析插件 要放在 分頁插件 和 樂觀鎖插件 之后

      @Bean
      public MybatisPlusInterceptor mybatisPlusInterceptor() {
          MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
      
          // 注冊分頁插件
          interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
      
          // 注冊樂觀鎖插件
          interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
      
         // 注冊性能分析插件
         interceptor.addInnerInterceptor(new IllegalSQLInnerInterceptor());
          return interceptor;
      }

      運(yùn)行測試

      1、運(yùn)行 查詢所有用戶列表 測試方法

      由于我們開啟了 邏輯刪除,所以在查詢時(shí)需要使用 deleted 為查詢條件進(jìn)行查詢,但我們沒有給 deleted 字段添加索引,所以這里報(bào)了一個(gè) 未使用索引的錯(cuò)誤

      image-20210215112019573

      2、修改數(shù)據(jù)庫,給 deleted 字段添加索引

      注意:添加組合索引時(shí),deleted 一定要放在第一個(gè),否則,使用單個(gè)deleted 作為條件查詢時(shí)無法觸發(fā)索引

      ALTER TABLE `mybatis_plus`.`user`
        ADD  UNIQUE INDEX `id_deleted_unique` (`deleted`, `id`);

      image-20210215113112299

      3、重新運(yùn)行 查詢所有用戶列表 測試方法

      image-20210215113143807

      SQL性能分析

      該功能有性能損耗,不建議生產(chǎn)環(huán)境使用

      添加依賴

      修改 pom.xml

      <dependency>
          <groupId>p6spy</groupId>
          <artifactId>p6spy</artifactId>
          <version>3.9.1</version>
      </dependency>

      修改數(shù)據(jù)源

      修改 src/main/resources/application.yml

      spring:
        datasource:
          username: root
          password: ok
         url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
         driver-class-name: com.p6spy.engine.spy.P6SpyDriver
         url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
         driver-class-name: com.mysql.cj.jdbc.Driver

      配置p6spy

      創(chuàng)建 src/main/resources/spy.properties

      modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
      # 自定義日志打印
      logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
      #日志輸出到控制臺
      appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
      # 使用日志系統(tǒng)記錄 sql
      #appender=com.p6spy.engine.spy.appender.Slf4JLogger
      # 設(shè)置 p6spy driver 代理
      deregisterdrivers=true
      # 取消JDBC URL前綴
      useprefix=true
      # 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
      excludecategories=info,debug,result,commit,resultset
      # 日期格式
      dateformat=yyyy-MM-dd HH:mm:ss
      # 是否開啟慢SQL記錄
      outagedetection=true
      # 慢SQL記錄標(biāo)準(zhǔn) 2 秒
      outagedetectioninterval=2

      運(yùn)行測試

      執(zhí)行 查詢用戶信息 測試方法

      image-20210215142948150

      代碼生成器

      創(chuàng)建SpringBoot項(xiàng)目

      新建一個(gè)SpringBoot項(xiàng)目

      導(dǎo)入依賴

      修改 pom.xml 文件

      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-generator</artifactId>
          <version>3.0.5</version>
      </dependency>
      
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      
      <dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity-engine-core</artifactId>
          <version>2.2</version>
      </dependency>
      
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
      </dependency>
      
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
          <version>2.9.2</version>
      </dependency>

      編寫代碼生成器

      創(chuàng)建 MyBatisPlusAutoCode 類

      package com.yacon.mybatisplus;
      
      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 java.util.ArrayList;
      
      /**
       * 代碼生成器
       */
      public class MyBatisPlusAutoCode {
          public static void main(String[] args) {
              AutoGenerator mpg = new AutoGenerator();
      
              /* 全局配置 */
              GlobalConfig gc = new GlobalConfig();
              //生成文件的輸出目錄
              String projectPath = System.getProperty("user.dir");
              gc.setOutputDir(projectPath + "/src/main/java");
              // 是否打開輸出目錄
              gc.setOpen(false);
              // 是否覆蓋已有文件
              gc.setFileOverride(true);
              // 開發(fā)人員
              gc.setAuthor("Yacon");
              // 是否生成swagger2注解
              gc.setSwagger2(true);
              // 時(shí)間類型對應(yīng)策略
              gc.setDateType(DateType.TIME_PACK);
              // mapper 命名方式
              gc.setMapperName("%sDao");
              // Mapper xml 命名方式
              gc.setXmlName("%sDao");
              // service 命名方式
              gc.setServiceName("%sService");
              // service impl 命名方式
              gc.setServiceImplName("%sServiceImpl");
              // controller 命名方式
              gc.setControllerName("%sController");
              // 指定生成的主鍵的ID類型
              gc.setIdType(IdType.AUTO);
              // 設(shè)置全局配置
              mpg.setGlobalConfig(gc);
      
              /* 數(shù)據(jù)源配置 */
              DataSourceConfig dsc = new DataSourceConfig();
              // 數(shù)據(jù)庫類型
              dsc.setDbType(DbType.MYSQL);
              // 驅(qū)動連接的URL
              dsc.setUrl("jdbc:mysql://localhost:3306/cvs_db?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
              // 驅(qū)動名稱
              dsc.setDriverName("com.mysql.cj.jdbc.Driver");
              // 數(shù)據(jù)庫賬號
              dsc.setUsername("root");
              // 數(shù)據(jù)庫密碼
              dsc.setPassword("ok");
              // 設(shè)置數(shù)據(jù)庫配置
              mpg.setDataSource(dsc);
      
              /* 包配置 */
              PackageConfig pc = new PackageConfig();
              // 父包模塊名
              pc.setModuleName("api");
              // 父包名
              pc.setParent("com.yacon.mybatisplus");
              // Entity包名
              pc.setEntity("pojo");
              // Service包名
              pc.setService("service");
              // Service Impl包名
              pc.setServiceImpl("service");
              // Mapper包名
              pc.setMapper("dao");
              // Mapper XML包名
              pc.setXml("dao");
              // Controller包名
              pc.setController("controller");
              // 設(shè)置包配置
              mpg.setPackageInfo(pc);
      
              /* 策略配置 */
              StrategyConfig strategy = new StrategyConfig();
              // 需要包含的表名
              strategy.setInclude("t_address","t_storage_record","t_supplier","t_sys_role","t_sys_user");
              // 表前綴
              strategy.setTablePrefix("t_");
              // 數(shù)據(jù)庫表映射到實(shí)體的命名策略
              strategy.setNaming(NamingStrategy.underline_to_camel);
              // 數(shù)據(jù)庫表字段映射到實(shí)體的命名策略
              strategy.setColumnNaming(NamingStrategy.underline_to_camel);
              // 是否為lombok模型
              strategy.setEntityLombokModel(true);
              // Boolean類型字段是否移除is前綴
              strategy.setEntityBooleanColumnRemoveIsPrefix(true);
              // 生成 @RestController 控制器
              strategy.setRestControllerStyle(true);
              // 駝峰轉(zhuǎn)連字符
              strategy.setControllerMappingHyphenStyle(true);
              // 樂觀鎖屬性名稱
              strategy.setVersionFieldName("version");
              // 邏輯刪除屬性名稱
              strategy.setLogicDeleteFieldName("deleted");
              // 表填充字段
              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);
              // 設(shè)置策略配置
              mpg.setStrategy(strategy);
      
              // 執(zhí)行
              mpg.execute();
          }
      }
      

      運(yùn)行代碼生成器

      image-20210215234739275

      posted @ 2021-06-09 12:25  編碼小高  閱讀(192)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲夂夂婷婷色拍ww47| 最近最好的2019中文| 欧洲一区二区中文字幕| 国产白袜脚足j棉袜在线观看| 国产天美传媒性色av高清| 少妇人妻偷人精品免费| 高清国产av一区二区三区| 渝中区| 亚洲av永久无码精品网站| 日韩中文字幕免费在线观看| 最新AV中文字幕无码专区| 精品一二三四区在线观看| 99久久99久久精品免费看蜜桃| 亚洲av不卡电影在线网址最新| 欧美成人片在线观看| 久久精品亚洲精品国产色婷| 无码囯产精品一区二区免费| 一区二区三区国产综合在线| 国产卡一卡二卡三免费入口| 国产明星精品无码AV换脸| 国产av无码专区亚洲草草| 色综合久久中文综合久久激情| 欧美一区二区三区成人久久片| 狼色精品人妻在线视频| 国产亚洲一在无在线观看| 精品素人AV无码不卡在线观看| 无码人妻精品一区二区三区下载| 亚洲精品一区国产欧美| 亚洲丶国产丶欧美一区二区三区| 国产精品女同性一区二区| 亚洲欧洲日韩国内精品| 无码国产偷倩在线播放| 国产精品视频一区二区三区无码| 亚洲婷婷综合色高清在线| 免费无码一区无码东京热| 深夜福利视频在线播放| 亚洲综合成人av在线| 99久久婷婷国产综合精品青草漫画| 在线观看无码不卡av| 欧美国产精品啪啪| 久久精品网站免费观看|