亲宝软件园·资讯

展开

MyBatis-Plus Generator配置 MyBatis-Plus Generator配置详解

黄进广寒 人气:0
想了解MyBatis-Plus Generator配置详解的相关内容吗,黄进广寒在本文为您仔细讲解MyBatis-Plus Generator配置的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:MyBatis-Plus,Generator配置,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.*;

/**
 * Created by wangqichang on 2018/6/1.
 */
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)<a href="http://projectlombok.org/" rel="external nofollow" >document</a>
        .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<String, Object> map = new HashMap<>();
        map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
        this.setMap(map);
      }
    };
    //自定义文件输出位置(非必须)
    List<FileOutConfig> 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);

    /**
     * 指定模板引擎 默认是VelocityTemplateEngine ,需要引入相关引擎依赖
     */
    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();
  }
}

加载全部内容

相关教程
猜你喜欢
用户评论