首页 > 其他分享 >MybatisPlus——全网配置最全的代码生成器

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

时间:2022-08-19 23:44:53浏览次数:110  
标签:包名 代码生成 MybatisPlus String 最全 配置 new 默认值 com

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<OutputFile, String>) 路径配置信息 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. 建表,插入数据

    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, '工藤新一','[email protected]'),
    (2, '毛利兰','[email protected]'),
    (3, '柯南', 28, '[email protected]'),
    (4, '灰原哀', 21, '[email protected]'),
    (5, '工藤有希子', 24, '[email protected]');
    
    
  2. 导入依赖

    <dependencies>
        <!--spring-boot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringBootTest-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.6.3</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--mysql 驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--mybatis-plus-generator 生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--velocity-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--以下两个引擎模板保留一个即可,看个人爱好选择-->
        <!--freemarker引擎模板-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!--beetl引擎模板-->
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetl</artifactId>
            <version>3.8.1.RELEASE</version>
        </dependency>
    </dependencies>
    
  3. yaml

    #设置开发环境
    spring:
      datasource:
        username: root
        password: 123456
        driver-class-name: com.p6spy.engine.spy.P6SpyDriver
        url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    
    
    
    
    mybatis-plus:
    	#配置日志  log-impl:日志实现
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        db-config:
          logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
          logic-delete-value: 1 # 逻辑已删除值(默认为 1)
          logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
    
    
    
    
    
  4. 在测试类里写入主方法并修改参数,运行即可【配置已经封装好了】

    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<String> listTable = Arrays.asList("user");  //设置需要自动代码生成的表名
            List<String> listTableSuffix = Arrays.asList("_b");    //设置 过滤 表的后缀
            List<String> 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();
        }
    
  5. 运行结果:

    image

    生成的包:

    image

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


标签:包名,代码生成,MybatisPlus,String,最全,配置,new,默认值,com
From: https://www.cnblogs.com/buchizicai/p/16606917.html

相关文章

  • mybatisplus-ActiveRecord 模式
    ActiveRecord模式直接调用Model对象来进行增删改查。实体类只需继承Model类即可进行强大的CRUD操作需要项目中已注入对应实体的BaseMapper实体类User点击查看代......
  • mybatisplus-sql注入器
    sql注入器使用mybatisplus只需要继承BaseMapper接口即可使用;但是有新的需求需要扩展BaseMapper里面的功能时可使用sql注入器。扩展BaseMapper里面的功能点击查看代码p......
  • 全网最全的权限系统设计方案(图解)
    1为什么需要权限管理日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、......
  • MyBatisPlus(四、代码生成器)
    一、旧版本注意适用版本:mybatis-plus-generator3.5.1以下版本  AutoGenerator是MyBatis-Plus的代码生成器,通过AutoGenerator可以快速根据数据表自动生成实体......
  • mybatisplus入门
    一、maven项目文件点击查看代码<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifact......
  • Java注解最全详解(超级详细)
    Java注解是一个很重要的知识点,掌握好Java注解有利于学习Java开发框架底层实现。@mikechenJava注解定义Java注解又称Java标注,是在JDK5时引入的新特性,注解(也被称为元数......
  • MyBatisPlus(三、增删改查)
    目录前言1、查询1、查询所有,不加条件去查询2、查询所有,加条件去查询3、多条件去查询4、分页查询5、等等2、添加3、删除4、修改5、自定义SQL(多表关联查询)总结前言 ......
  • 清晰梳理最全日志框架关系与日志配置-SpringBoot 2.7.2 实战基础
    优雅哥SpringBoot2.7.2实战基础-07-日志配置Java中日志相关的jar包非常多,log4j、log4j2、commons-logging、logback、slf4j等,本文首先梳理这些包之间关系,然后......
  • 使用 Golang 代码生成图表的开源库对比
    本文的目标读者对用Golang代码生成折线图、扇形图等图表有兴趣的朋友。本文摘要主要介绍Go中用以绘图的开源库,分别是:GitHub-wcharczuk/go-chart:gochartisa......
  • MyBatisPlus(一、快速入门)
    1、简介  MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus可以不需要写SQL语句就能快速完......