栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis-Plus Generator配置详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis-Plus Generator配置详解

本文仅对使用MyBatis-Plus的代码生成器配置做保存,适合使用了该插件的童鞋做参考。

内部有大量默认配置,有性趣的童鞋可以研究下源码。

ps:官方文档更齐全http://mp.baomidou.com/

package com.kichun.ucenter.service;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.io.File;
import java.util.*;


public class MabatisPlusGenerator {

  //生成文件所在项目路径
  private static String baseProjectPath = "D:\Git\strandrd_official_website\kichun\kichun-ucenter\kichun-ucenter-entity";

  //基本包名
  private static String basePackage="com.kichun.ucenter";
  //作者
  private static String authorName="wangqichang";
  //要生成的表名
  private static String[] tables= {"t_role","t_resource","t_role_resource","t_user_role"};
  //table前缀
  private static String prefix="t_";

  //数据库配置四要素
  private static String driverName = "net.sf.log4jdbc.DriverSpy";
  private static String url = "jdbc:log4jdbc:mysql://127.0.0.1:3306/kichun_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true";
  private static String username = "不告诉你";
  private static String password = "密码也不告诉你";


  public static void main(String[] args) {


    AutoGenerator gen = new AutoGenerator();

    
    gen.setDataSource(new DataSourceConfig()
 .setDbType(DbType.MYSQL)
 .setDriverName(driverName)
 .setUrl(url)
 .setUsername(username)
 .setPassword(password)
 .setTypeConvert(new MySqlTypeConvert() {
   // 自定义数据库表字段类型转换【可选】
   @Override
   public DbColumnType processTypeConvert(String fieldType) {
     System.out.println("转换类型:" + fieldType);
     // if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
     //  return DbColumnType.BOOLEAN;
     // }
     return super.processTypeConvert(fieldType);
   }
 }));

    
    gen.setGlobalConfig(new GlobalConfig()
 .setOutputDir( baseProjectPath + "/src/main/java")//输出目录
 .setFileOverride(true)// 是否覆盖文件
 .setActiveRecord(true)// 开启 activeRecord 模式
 .setEnableCache(false)// XML 二级缓存
 .setbaseResultMap(true)// XML ResultMap
 .setbaseColumnList(true)// XML columList
 .setOpen(false)//生成后打开文件夹
 .setAuthor(authorName)
 // 自定义文件命名,注意 %s 会自动填充表实体属性!
 .setMapperName("%sMapper")
 .setXmlName("%sMapper")
 .setServiceName("%sService")
 .setServiceImplName("%sServiceImpl")
 .setControllerName("%sController")
    );

    
    gen.setStrategy(new StrategyConfig()
 // .setCapitalMode(true)// 全局大写命名
 //.setDbColumnUnderline(true)//全局下划线命名
 .setTablePrefix(new String[]{prefix})// 此处可以修改为您的表前缀
 .setNaming(NamingStrategy.underline_to_camel)// 表名生成策略
 .setInclude(tables) // 需要生成的表
 .setRestControllerStyle(true)
 //.setExclude(new String[]{"test"}) // 排除生成的表
 // 自定义实体父类
 // .setSuperEntityClass("com.baomidou.demo.TestEntity")
 // 自定义实体,公共字段
 //.setSuperEntityColumns(new String[]{"test_id"})
 //.setTableFillList(tableFillList)
 // 自定义 mapper 父类 默认baseMapper
 //.setSuperMapperClass("com.baomidou.mybatisplus.mapper.baseMapper")
 // 自定义 service 父类 默认IService
 // .setSuperServiceClass("com.baomidou.demo.TestService")
 // 自定义 service 实现类父类 默认ServiceImpl
 // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
 // 自定义 controller 父类
 //.setSuperControllerClass("com.kichun."+packageName+".controller.AbstractController")
 // 【实体】是否生成字段常量(默认 false)
 // public static final String ID = "test_id";
 // .setEntityColumnConstant(true)
 // 【实体】是否为构建者模型(默认 false)
 // public User setName(String name) {this.name = name; return this;}
 // .setEntityBuilderModel(true)
 // 【实体】是否为lombok模型(默认 false)document
 .setEntityLombokModel(true)
 // Boolean类型字段是否移除is前缀处理
 // .setEntityBooleanColumnRemoveIsPrefix(true)
 // .setRestControllerStyle(true)
 // .setControllerMappingHyphenStyle(true)
    );

    
    gen.setPackageInfo(new PackageConfig()
     //.setModuleName("User")
     .setParent(basePackage)// 自定义包路径
     .setController("controller")// 这里是控制器包名,默认 web
     .setEntity("entity")
     .setMapper("dao")
     .setService("service")
     .setServiceImpl("service.impl")
     .setXml("mapper")
     );

    
    // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
    InjectionConfig abc = new InjectionConfig() {
      @Override
      public void initMap() {
 Map map = new HashMap<>();
 map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
 this.setMap(map);
      }
    };
    //自定义文件输出位置(非必须)
    List fileOutList = new ArrayList<>();
    fileOutList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
      @Override
      public String outputFile(TableInfo tableInfo) {
 return baseProjectPath + "/src/main/resources/mappers/" + tableInfo.getEntityName() + ".xml";
      }
    });
    abc.setFileOutConfigList(fileOutList);
    gen.setCfg(abc);

    
    gen.setTemplateEngine(new FreemarkerTemplateEngine());

    
    gen.setTemplate(
 // 关闭默认 xml 生成,调整生成 至 根目录
 new TemplateConfig().setXml(null)
 // 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
 // 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
 // .setController("...");
 // .setEntity("...");
 // .setMapper("...");
 // .setXml("...");
 // .setService("...");
 // .setServiceImpl("...");
    );

    // 执行生成
    gen.execute();
  }
}

到此这篇关于MyBatis-Plus Generator配置详解的文章就介绍到这了,更多相关MyBatis-Plus Generator配置内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/132267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号