• MybatisPlus——全网配置最全的代码生成器


    MybatisPlus代码生成器

    这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容

    官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)

    配置

    这里的配置表格和官方文档一致

    数据源配置(DataSource)

    属性 说明 示例
    url jdbc路径 jdbc:mysql://127.0.0.1:3306/mybatis-plus
    username 数据库账号 root
    password 数据库密码 123456
    dbQuery(IDbQuery) 数据库查询 new MySqlQuery()
    schema(String) 数据库schema(部分数据库适用) mybatis-plus
    typeConvert(ITypeConvert) 数据库类型转换器 new MySqlTypeConvert()
    keyWordsHandler(IKeyWordsHandler) 数据库关键字处理器 new MySqlKeyWordsHandler()

    全局配置(GlobalConfig)

    方法 说明 示例
    fileOverride 覆盖已生成文件 默认值:false
    disableOpenDir 禁止打开输出目录 默认值:true
    outputDir(String) 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
    author(String) 作者名 baomidou 默认值:作者
    enableKotlin 开启 kotlin 模式 默认值:false
    enableSwagger 开启 swagger 模式 默认值:false
    dateType(DateType) 时间策略 DateType.ONLY_DATE=Date 默认值: DateType.TIME_PACK=LocalDateTime
    commentDate(String) 注释日期 默认值: yyyy-MM-dd

    包配置(PackageConfig)

    方法 说明 示例
    parent(String) 父包名 默认值:com.baomidou
    moduleName(String) 父包模块名 默认值:无
    entity(String) Entity 包名 默认值:entity
    service(String) Service 包名 默认值:service
    serviceImpl(String) Service Impl 包名 默认值:service.impl
    mapper(String) Mapper 包名 默认值:mapper
    mapperXml(String) Mapper XML 包名 默认值:mapper.xml
    controller(String) Controller 包名 默认值:controller
    other(String) 自定义文件包名 输出自定义文件时所用到的包名
    pathInfo(Map) 路径配置信息 Collections.singletonMap(OutputFile.mapperXml, "D://")

    策略配置(StrategyConfig)

    方法 说明 示例
    enableCapitalMode 开启大写命名 默认值:false
    enableSkipView 开启跳过视图 默认值:false
    disableSqlFilter 禁用 sql 过滤 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关
    enableSchema 启用 schema 默认值:false,多 schema 场景的时候打开
    likeTable(LikeTable) 模糊表匹配(sql 过滤) likeTable 与 notLikeTable 只能配置一项
    notLikeTable(LikeTable) 模糊表排除(sql 过滤) likeTable 与 notLikeTable 只能配置一项
    addInclude(String...) 增加表匹配(内存过滤) include 与 exclude 只能配置一项
    addExclude(String...) 增加表排除匹配(内存过滤) include 与 exclude 只能配置一项
    addTablePrefix(String...) 增加过滤表前缀
    addTableSuffix(String...) 增加过滤表后缀
    addFieldPrefix(String...) 增加过滤字段前缀
    addFieldSuffix(String...) 增加过滤字段后缀
    entityBuilder 实体策略配置
    controllerBuilder controller 策略配置
    mapperBuilder mapper 策略配置
    serviceBuilder service 策略配置

    模板引擎配置(TemplateEngine)

    默认 Velocity ;可选模板引擎 Beetl 或 Freemarker。(二选一即可)

    模板引擎 代码
    Velocity 默认 .templateEngine(new VelocityTemplateEngine())
    Freemarker 可选 .templateEngine(new FreemarkerTemplateEngine())
    Beetl 可选 .templateEngine(new BeetlTemplateEngine())

    手动配置代码生成器

    1. 建表,插入数据

      copy
      DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', version INT(10) NOT NULL DEFAULT 1 COMMIT '乐观锁版本号', DELETED INT(10) NOT NULL DEFAULT 0 COMMIT '逻辑删除', CREATE_TIME DATE COMMIT '创建时间', modify_time DATE COMMIT '更新时间', PRIMARY KEY (id) ); DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (1, '工藤新一','test1@baomidou.com'), (2, '毛利兰','est2@baomidou.com'), (3, '柯南', 28, 'test3@baomidou.com'), (4, '灰原哀', 21, 'test4@baomidou.com'), (5, '工藤有希子', 24, 'test5@baomidou.com');
    2. 导入依赖

      copy
      <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>io.swaggergroupId> <artifactId>swagger-annotationsartifactId> <version>1.6.3version> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>8.0.26version> dependency> <dependency> <groupId>com.baomidougroupId> <artifactId>mybatis-plus-boot-starterartifactId> <version>3.5.2version> dependency> <dependency> <groupId>com.baomidougroupId> <artifactId>mybatis-plus-generatorartifactId> <version>3.5.2version> dependency> <dependency> <groupId>org.apache.velocitygroupId> <artifactId>velocity-engine-coreartifactId> <version>2.3version> dependency> <dependency> <groupId>org.freemarkergroupId> <artifactId>freemarkerartifactId> <version>2.3.31version> dependency> <dependency> <groupId>com.ibeetlgroupId> <artifactId>beetlartifactId> <version>3.8.1.RELEASEversion> dependency> dependencies>
    3. 在测试类里写入主方法并修改参数,运行即可【配置已经封装好了】

      copy
      public static void main(String[] args) { //这里按着给的注解修改参数即可 //手动配置数据源 String url="jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"; //注意修改数据库名 String name="root"; String password="123456"; //数据库表的设置 List listTable = Arrays.asList("user"); //设置需要自动代码生成的表名 List listTableSuffix = Arrays.asList("_b"); //设置 过滤 表的后缀 List listTablePrefix = Arrays.asList("t_","c_"); //设置 过滤 表的后缀 //基本信息 String author = "柯南"; //作者 String parent = "com"; //父包名 String module = "example"; //模块包名 //已封装好,无需更改。可按照需求进行注释 //1、配置数据源 FastAutoGenerator.create(url, name, password) //2、全局配置 .globalConfig(builder -> { builder.author(author) // 设置作者名 .outputDir(System.getProperty("user.dir") + "/src/main/java") //设置输出路径:项目的 java 目录下【System.getProperty("user.dir")意思是获取到项目所在的绝对路径】 .commentDate("yyyy-MM-dd hh:mm:ss") //注释日期 .dateType(DateType.ONLY_DATE) //定义生成的实体类中日期的类型 TIME_PACK=LocalDateTime;ONLY_DATE=Date; .fileOverride() //覆盖之前的文件 .enableSwagger() //开启 swagger 模式 .disableOpenDir(); //禁止打开输出目录,默认打开 }) //3、包配置 .packageConfig(builder -> { builder.parent(parent) // 设置父包名 .moduleName(module) //设置模块包名 .entity("entity") //pojo 实体类包名 .service("service") //Service 包名 .serviceImpl("service.impl") // ***ServiceImpl 包名 .mapper("mapper") //Mapper 包名 .xml("mapper.xml") //Mapper XML 包名 .controller("controller") //Controller 包名 .other("config") //自定义包名(一般不在这里生成,而是后面编写的时候自己建包) .pathInfo(Collections.singletonMap(OutputFile.mapper.xml, System.getProperty("user.dir")+"/src/main/resources/mapper")); //配置 mapper.xml 路径信息:项目的 resources 目录下 }) //4、策略配置 .strategyConfig(builder -> { builder .enableCapitalMode() //开启大写命名 .enableSkipView() //创建实体类的时候跳过视图 .addInclude(listTable) // 设置需要生成的数据表名 .addTableSuffix(listTableSuffix) //设置 过滤 表的后缀 .addTablePrefix(listTablePrefix) // 设置 过滤 表的前缀 //4.1、实体类策略配置 .entityBuilder() .enableChainModel() //开启链式模型 //.disableSerialVersionUID() //默认是开启实体类序列化,可以手动disable使它不序列化。由于项目中需要使用序列化就按照默认开启了 .enableTableFieldAnnotation() // 开启生成实体时生成字段注解 .enableLombok() //开启 Lombok .versionColumnName("version") //乐观锁字段名(数据库) .versionPropertyName("version") //乐观锁属性名(实体) .logicDeleteColumnName("deleted") //逻辑删除字段名(数据库) .logicDeletePropertyName("deleteFlag") //逻辑删除属性名(实体) .naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:默认是下划线转驼峰命。这里可以不设置 .columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命。(默认是和naming一致,所以也可以不设置) .addTableFills( new Column("create_time", FieldFill.INSERT), new Column("modify_time", FieldFill.INSERT_UPDATE) ) //添加表字段填充,"create_time"字段自动填充为插入时间,"modify_time"字段自动填充为插入修改时间 .idType(IdType.AUTO) //设置主键自增 //4.2、Controller策略配置 .controllerBuilder() .enableHyphenStyle() //开启驼峰连转字符 .formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController .enableRestStyle() //开启生成 @RestController 控制器 //4.3、service 策略配置 .serviceBuilder() .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl //4.4、Mapper策略配置 .mapperBuilder() .superClass(BaseMapper.class) //设置父类 .enableBaseResultMap() //启用 BaseResultMap 生成 .enableBaseColumnList() //启用 BaseColumnList .formatMapperFileName("%sMapper") //格式化 mapper 文件名称 .enableMapperAnnotation() //开启 @Mapper 注解 .formatXmlFileName("%sXml") //格式化Xml文件名称 .formatMapperFileName("%sMapper"); //格式化Mapper文件名称 }) //5、模板 .templateEngine(new VelocityTemplateEngine()) /* 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker(以下两个引擎用哪个就保留哪个) .templateEngine(new BeetlTemplateEngine()) .templateEngine(new FreemarkerTemplateEngine()) */ .templateEngine(new FreemarkerTemplateEngine()) //本人选择了Freemarker //6、执行 .execute(); }
    4. 运行结果:

    image

    1. 生成的包:

    image

    注意:

    1. 代码生成器生成的实体类是用@Setter和@Getter ,没有toString方法和有参、无参构造,所以代码生成后需要手动在实体类上删除@Setter和@Getter ,添加@Data @NoArgsConstructor @AllArgsConstructor

    2. 代码生成的实体类时间是Date,如果需要用到自动填充就需要手动将时间的字段改成LocalDateTime类型


  • 相关阅读:
    Docker安装部署,拉取镜像-详细过程
    Day09:switch——case结构的使用详解
    PostgreSQL 查询某个属性相同内容出现的次数
    Redis底层数据结构之IntSet
    华为认证HCIP是什么?有什么用?
    数据库理论知识及相关发展方向
    区块链技术与应用学习笔记(12-13节)——北大肖臻课程
    Yolov5创新:NEU-DET钢材表面缺陷检测,优化组合新颖程度较高,CVPR2023 DCNV3和InceptionNeXt,涨点明显
    Cheat Engine 学习
    nginx主机黑白名单[geoip]
  • 原文地址:https://www.cnblogs.com/buchizicai/p/16606917.html