zoukankan      html  css  js  c++  java
  • 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="https://projectlombok.org/">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();
        }
    }
  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/huangjinyong/p/11234268.html
Copyright © 2011-2022 走看看