mybatis plus 的代码生成器

  1 package com.raise3d.MyGenerator;
  2 
  3 import com.baomidou.mybatisplus.annotation.DbType;
  4 import com.baomidou.mybatisplus.annotation.IdType;
  5 import com.baomidou.mybatisplus.generator.AutoGenerator;
  6 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
  7 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
  8 import com.baomidou.mybatisplus.generator.config.PackageConfig;
  9 import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 10 import com.baomidou.mybatisplus.generator.config.rules.DateType;
 11 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 12 
 13 /**
 14  * 代码生成器工具类(测试)
 15  *
 16  * 3.x生成的代码中,不含@TableField("name")
 17  * 官方人员的说法是:
 18  * @miemie 【成员】
 19  * 根据规则生成的entity不再会出现多余的注解
 20  *
 21  * @author Wenyi Feng
 22  * @since 2018-08-31
 23  */
 24 public class Utils {
 25 
 26     /**
 27      * 执行生成代码
 28      */
 29     public static void generateCode() {
 30         String packageName = "com.raise3d";
 31         //generateByTables(packageName, "t_student", "t_city", "t_idcard");
 32         generateByTables(packageName, null);
 33     }
 34 
 35     private static void generateByTables(String packageName, String... tableNames) {
 36 
 37         // 数据库信息
 38 //        String dbUrl = "jdbc:mysql://localhost:3306/mybatis-plus?useSSL=true";
 39         String dbUrl = "jdbc:mysql://192.168.0.28:3306/cloud_msg";
 40         DataSourceConfig dataSourceConfig = new DataSourceConfig()
 41                 .setDbType(DbType.MYSQL)
 42                 .setUrl(dbUrl)
 43                 .setUsername("root")
 44 //                .setPassword("xfsy2017")
 45                 .setPassword("fuzhi001")
 46                 .setDriverName("com.mysql.jdbc.Driver") // mysql 5
 47 //                .setDriverName("com.mysql.cj.jdbc.Driver") // mysql 8
 48                 /*.setTypeConvert(new MySqlTypeConvert() {
 49                     @Override
 50                     public PropertyInfo processTypeConvert(GlobalConfig globalConfig, String fieldType) {
 51                         //.....
 52                         // 当发现生成的类型并不能满足你的要求时,可以去这里看,然后重写
 53                     }
 54                 })*/
 55                 ;
 56 
 57         // 配置
 58         GlobalConfig config = new GlobalConfig()
 59                 .setActiveRecord(false)
 60                 .setAuthor("Logen.Wang")
 61 //                .setOutputDir("/Users/fengwenyi/Workspace/file/codeGen")
 62                 .setOutputDir("d:/codeGen")
 63                 .setFileOverride(true)
 64                 .setActiveRecord(true)// 不需要ActiveRecord特性的请改为false
 65                 .setEnableCache(false)// XML 二级缓存
 66                 .setBaseResultMap(false)// XML ResultMap
 67                 .setBaseColumnList(true)// XML columList
 68                 .setKotlin(false) //是否生成 kotlin 代码
 69                 // 自定义文件命名,注意 %s 会自动填充表实体属性!
 70                 .setMapperName("%sDao")
 71                 .setXmlName("%sMapper")
 72                 .setServiceName("%sService")
 73                 .setServiceImplName("%sServiceImpl")
 74                 .setControllerName("%sController")
 75                 .setDateType(DateType.ONLY_DATE) //只使用 java.util.date 代替
 76                 .setIdType(IdType.ID_WORKER)
 77                 .setSwagger2(false) // model swagger2
 78                 //.setOpen(true) // 是否打开输出目录
 79                 ;
 80 //                if (!serviceNameStartWithI)
 81 //                    config.setServiceName("%sService");
 82 
 83 
 84         StrategyConfig strategyConfig = new StrategyConfig()
 85                 .setCapitalMode(true) // 全局大写命名 ORACLE 注意
 86                 //.setTablePrefix("t_")// 此处可以修改为您的表前缀(数组)
 87                 .setNaming(NamingStrategy.underline_to_camel) // 表名生成策略
 88                 .setInclude(tableNames)//修改替换成你需要的表名,多个表名传数组
 89                 //.setExclude(new String[]{"test"}) // 排除生成的表
 90                 .setRestControllerStyle(true)
 91                 .setControllerMappingHyphenStyle(true)
 92                 .setEntityLombokModel(true) // lombok实体
 93                 .setEntityBuilderModel(false) // 【实体】是否为构建者模型(默认 false)
 94                 .setEntityColumnConstant(false) // 【实体】是否生成字段常量(默认 false)// 可通过常量名获取数据库字段名 // 3.x支持lambda表达式
 95                 //.setLogicDeleteFieldName("is_delete") // 逻辑删除属性名称
 96                 .entityTableFieldAnnotationEnable(true)
 97                 .setColumnNaming(NamingStrategy.nochange)
 98                 ;
 99 
100         // 包信息配置
101         PackageConfig packageConfig = new PackageConfig()
102                 .setParent(packageName)
103                 .setController("controller")
104                 .setEntity("model")
105                 .setMapper("dao")
106                 .setXml("mapper")
107 
108                 /*
109                 // 共同构建成包名
110                 .setParent("com.fengwenyi")
111                 .setModuleName("model")
112                 */
113                 ;
114 
115         // 执行器
116         new AutoGenerator()
117                 .setGlobalConfig(config)
118                 .setDataSource(dataSourceConfig)
119                 .setStrategy(strategyConfig)
120                 .setPackageInfo(packageConfig)
121                 .execute();
122     }
123 
124 }

启动APP

package com.raise3d.MyGenerator;

//import com.baomidou.mybatisplus.annotation.TableField;
//import com.baomidou.mybatisplus.annotation.TableId;

/**
 * 代码生成器(测试)
 * @author Wenyi Feng
 * @since 2018-08-31
 */
public class App {

//    @TableField
//    @TableId

    public static void main(String[] args) {
        Utils.generateCode();
        //UtilsV2.generateCode();
    }


}

  mybatis plus 是在18年下半年接触到的一个对mybatis进行封装的框架,具备mybatis原有的属性,在mybatis原有的基础上封装基本的curd操作方法,覆盖了日常数据库的操作,(复杂的sql查询除外),简单易用,此生成器生成了controller、service、serviceImpl、dao、mapper、等文件。

猜你喜欢

转载自www.cnblogs.com/mingyuan1031/p/10738316.html