暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mybatis-plus-generator生成模版

81
  • 背景 

    • mybatis plus代码自动生成工具主要用于生产表的DO实体类,如果有十几张表,也是一键生成,可以提高开发效率。

  • 引入依赖

    • 说明:对于单体应用直接引入依赖到pom文件中即可,对于聚合工程的项目,如果每一个子module中都需要生成,可以考虑把依赖放在公共的common项目module中,然后所有的子module都引入我们都common项目。

    <!-- 代码自动生成依赖 begin 上线不需要这个-->
    <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>
    <!-- 代码自动生成依赖 end-->
    • 在需要的module中的test文件中编写MybatisPlusGenerator类,这里用user模块为例。

      • 核心关注点:数据库的ip地址+用户名+密码;针对的是哪些表;生成文件的输出路径;groupid是什么(通常是公司域名反写)



      public class MyBatisPlusGenerator {


      public static void main(String[] args) {
      //1. 全局配置
      GlobalConfig config = new GlobalConfig();
      // 是否支持AR模式
      config.setActiveRecord(true)
      // 作者
      .setAuthor("liangmerlin")
      // 生成路径,最好使用绝对路径,window路径是不一样的
      //TODO TODO TODO TODO
      .setOutputDir("/Users/lianglin/Desktop/demo/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/xdclass_user?useSSL=false")
      .setUsername("root")
                      .setPassword("lianglin-hahaxxxyy");


      //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");
      //.setInclude(scanner("表名,多个英文逗号分割").split(","));


      //4. 包名策略配置
      PackageConfig pkConfig = new PackageConfig();
      //TODO TODO TODO TODO setParent需要设置自己的项目groupId
      pkConfig.setParent("org.example")
      .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 相关代码生成完毕 ========");
      }


      /**
      * <p>
      * 读取控制台内容
      * </p>
      */
      public static String scanner(String tip) {
      Scanner scanner = new Scanner(System.in);
      StringBuilder help = new StringBuilder();
      help.append("请输入" + tip + ":");
      System.out.println(help.toString());
      if (scanner.hasNext()) {
      String ipt = scanner.next();
      if (StringUtils.isNotBlank(ipt)) {
      return ipt;
      }
      }
      throw new MybatisPlusException("请输入正确的" + tip + "!");
      }
      }
      • 运行main方法,然后把代码拷贝到对应的项目文件夹中

        • 这里我们只关注controller-dao-mapper的代码,service代码我们自己编写。

        • 生成以后数据库中的每一张表都会自动生成其对应的controller,mapper,dao,xml



      leetcode算法训练营春节福利价,截止到1月31日23:00结束,年度最低价,想参加的快快报名啦。

      算法vip班永久学习班,错过将再等一年。

      奔跑的小梁,公众号:梁霖编程工具库算法训练营春节超低优惠价通知,错过这次再等一年!!!



      文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论