学会了,可以看看这篇文章:更新中~
 
 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。
 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:
 Java实体类
 Mapper接口
 Mapper配置文件
 Service接口及ServiceImpl实现类
 Controller类
 
 
        MybatisPlus是一个强大的持久层框架,它可以让你的数据库操作更加方便、高效和优雅。但是,如果你要手动编写实体类、Mapper接口和配置文件,那么你可能会觉得很繁琐、重复和容易出错。有没有一种方法可以让你自动地生成这些代码呢?答案是肯定的,那就是MybatisPlus的逆向工程功能。
 
        MybatisPlus的逆向工程可以根据你的数据库表结构,自动生成对应的实体类、Mapper接口和配置文件,从而节省你的时间和精力,提高你的开发效率。你只需要简单地配置一些参数,就可以轻松地完成这个过程。而且,MybatisPlus的逆向工程还支持多种数据库类型,如MySQL、Oracle、SQL Server等,以及多种代码风格,如Lombok、ActiveRecord等,让你可以根据自己的需求进行定制。
 
        在这篇博客中,我将通过一个完整的示例教程,带你一步步地掌握这个强大的功能。无论你是MybatisPlus的初学者还是老手,我相信你都能从中受益。如果你对这个主题感兴趣,请继续阅读吧!
 
目录
 
步骤一:在Pom.xml文件中添加依赖
 
步骤二:在application.yml文件中编写数据库信息
 
步骤三:编写handler处理器类
 
步骤四:编写mybatisPlusconfig配置文件
 
步骤五:编写代码生成器类
 
 
步骤一:在Pom.xml文件中添加依赖
 
  <!-- 数据库驱动 --> <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId> </dependency> <!-- lombok --> <dependency>     <groupId>org.projectlombok</groupId>     <artifactId>lombok</artifactId> </dependency> <!-- mybatis-plus -->  <!-- mybatis-plus 是自己开发,并非官方的! --> <dependency>     <groupId>com.baomidou</groupId>     <artifactId>mybatis-plus-boot-starter</artifactId>     <version>3.0.5</version> </dependency>   <!--MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖并添加 模板引擎 依赖-->                    <dependency>              <groupId>com.baomidou</groupId>              <artifactId>mybatis-plus-generator</artifactId>              <version>3.0.5</version>          </dependency>           <dependency>              <groupId>org.apache.velocity</groupId>              <artifactId>velocity-engine-core</artifactId>              <version>2.0</version>          </dependency>      | 
 
步骤二:在application.yml文件中编写数据库信息
 
  spring:    datasource:      driver-class-name: com.mysql.cj.jdbc.Driver      url: jdbc:mysql://localhost:3306/else?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8      username: root      password: 123    profiles:      active: dev mybatis-plus:    configuration:      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl      map-underscore-to-camel-case: true    mapper-locations: classpath:com/example/demo/mapper/xml/*.xml    # 配置逻辑删除    global-config:      db-config:        logic-delete-value: 1        logic-not-delete-value: 0      | 
 
步骤三:编写handler处理器类
 
  @MapperScan("com.example.demo") @EnableTransactionManagement  @Configuration public class MyBatisPlusConfig {      // 注册乐观锁插件      @Bean      public OptimisticLockerInterceptor optimisticLockerInterceptor() {          return new OptimisticLockerInterceptor();      }
       // 逻辑删除组件!      @Bean      public ISqlInjector sqlInjector() {          return new LogicSqlInjector();      }
       /**       * SQL执行效率插件       */      @Bean      @Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率      public PerformanceInterceptor performanceInterceptor() {          PerformanceInterceptor performanceInterceptor = new                  PerformanceInterceptor();          performanceInterceptor.setMaxTime(1000); // ms设置sql执行的最大时间,如果超过了则不执行          performanceInterceptor.setFormat(true); // 是否格式化代码          return performanceInterceptor;      }  }      | 
 
步骤四:编写mybatisPlusconfig配置文件
 
  @Slf4j  @Component // 一定不要忘记把处理器加到IOC容器中! public class MyMetaObjectHandler implements MetaObjectHandler {      // 插入时的填充策略      @Override      public void insertFill(MetaObject metaObject) { // setFieldValByName(String fieldName, Object fieldVal, 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);      }  }      | 
 
步骤五:编写代码生成器类
 
  public class AutoClass {      public static void main(String[] args) { // 需要构建一个 代码自动生成器 对象          AutoGenerator mpg = new AutoGenerator(); // 配置策略 // 1、全局配置          GlobalConfig gc = new GlobalConfig();          String projectPath = System.getProperty("user.dir");// 不用改,表示获取当去用户          gc.setOutputDir(projectPath+"/src/main/java");// 不用改,表示项目路径          gc.setAuthor("高垚淼"); // 作者名          gc.setOpen(false); // 创建后是否打开目录,没必要          gc.setFileOverride(false); // 重名文件是否覆盖          gc.setServiceName("%sService"); // 去Service的I前缀          gc.setIdType(IdType.ID_WORKER); // 表示id的生成策略,默认是雪花算法          gc.setDateType(DateType.ONLY_DATE); //表示时间默认采用date类型,秒级别以上转datetime不会存在精度丢失          gc.setSwagger2(true);   // 开启后自动添加相关注解,方便生成API文档          mpg.setGlobalConfig(gc); //设置以上配置作用于全局 //2、设置数据源          DataSourceConfig dsc = new DataSourceConfig();          dsc.setUrl("jdbc:mysql://localhost:3306/else?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");          dsc.setDriverName("com.mysql.cj.jdbc.Driver");          dsc.setUsername("root");          dsc.setPassword("123");          dsc.setDbType(DbType.MYSQL); //根据不同数据库进行适配          mpg.setDataSource(dsc); //3、包的配置          PackageConfig pc = new PackageConfig();          pc.setModuleName("demo"); // 设置在哪个项目名          pc.setParent("com.example"); // 设置在那个com.公司名          pc.setEntity("entity");          pc.setMapper("mapper");          pc.setService("service");          pc.setController("controller");          mpg.setPackageInfo(pc); //4、策略配置          StrategyConfig strategy = new StrategyConfig();          strategy.setInclude("stu","course","score","stu_course"); // 设置要映射的表名          strategy.setNaming(NamingStrategy.underline_to_camel); //设置开启驼峰命名,将数据库中的表_转为java驼峰命名          strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 设置开启驼峰命名,将数据库表中的属性_转为java驼峰命名          strategy.setEntityLombokModel(true); // 自动lombok;          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); // 乐观锁          strategy.setVersionFieldName("version"); // 在乐观锁属性上加注解          strategy.setRestControllerStyle(true); // 设置返回实体,这里要注意,如果要后端返回excel表格,这里要false          strategy.setControllerMappingHyphenStyle(true); //设置Controller的请求路径开启驼峰命名          mpg.setStrategy(strategy);          mpg.execute(); //执行      }  }      | 
 
到这步运行这个类,就能自动生成mapper、service、controller、entity包及对应类了,大大提高了开发 效率!