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

打印 上一主题 下一主题

主题 860|帖子 860|积分 2580

MybatisPlus代码生成器

这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容
官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)
配置

这里的配置表格和官方文档一致
数据源配置(DataSource)

属性说明示例urljdbc路径jdbc:mysql://127.0.0.1:3306/mybatis-plususername数据库账号rootpassword数据库密码123456dbQuery(IDbQuery)数据库查询new MySqlQuery()schema(String)数据库schema(部分数据库适用)mybatis-plustypeConvert(ITypeConvert)数据库类型转换器new MySqlTypeConvert()keyWordsHandler(IKeyWordsHandler)数据库关键字处理器new MySqlKeyWordsHandler()全局配置(GlobalConfig)

方法说明示例fileOverride覆盖已生成文件默认值:falsedisableOpenDir禁止打开输出目录默认值:trueoutputDir(String)指定输出目录/opt/baomidou/ 默认值: windows:D:// linux or mac : /tmpauthor(String)作者名baomidou 默认值:作者enableKotlin开启 kotlin 模式默认值:falseenableSwagger开启 swagger 模式默认值:falsedateType(DateType)时间策略DateType.ONLY_DATE=Date 默认值: DateType.TIME_PACK=LocalDateTimecommentDate(String)注释日期默认值: yyyy-MM-dd包配置(PackageConfig)

方法说明示例parent(String)父包名默认值:com.baomidoumoduleName(String)父包模块名默认值:无entity(String)Entity 包名默认值:entityservice(String)Service 包名默认值:serviceserviceImpl(String)Service Impl 包名默认值:service.implmapper(String)Mapper 包名默认值:mappermapperXml(String)Mapper XML 包名默认值:mapper.xmlcontroller(String)Controller 包名默认值:controllerother(String)自定义文件包名输出自定义文件时所用到的包名pathInfo(Map)路径配置信息Collections.singletonMap(OutputFile.mapperXml, "D://")策略配置(StrategyConfig)

方法说明示例enableCapitalMode开启大写命名默认值:falseenableSkipView开启跳过视图默认值:falsedisableSqlFilter禁用 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实体策略配置controllerBuildercontroller 策略配置mapperBuildermapper 策略配置serviceBuilderservice 策略配置模板引擎配置(TemplateEngine)

默认 Velocity ;可选模板引擎 Beetl 或 Freemarker。(二选一即可)
模板引擎代码Velocity默认.templateEngine(new VelocityTemplateEngine())Freemarker可选.templateEngine(new FreemarkerTemplateEngine())Beetl可选.templateEngine(new BeetlTemplateEngine())手动配置代码生成器


  • 建表,插入数据
    1. DROP TABLE IF EXISTS user;
    2. CREATE TABLE user
    3. (
    4.     id BIGINT(20) NOT NULL COMMENT '主键ID',
    5.     name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    6.     age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    7.     email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    8.     version INT(10) NOT NULL DEFAULT 1 COMMIT '乐观锁版本号',
    9.     DELETED INT(10) NOT NULL DEFAULT 0 COMMIT '逻辑删除',
    10.     CREATE_TIME DATE COMMIT '创建时间',
    11.     modify_time DATE COMMIT '更新时间',
    12.     PRIMARY KEY (id)
    13. );
    14. DELETE FROM user;
    15. INSERT INTO user (id, name, age, email) VALUES
    16. (1, '工藤新一','test1@baomidou.com'),
    17. (2, '毛利兰','est2@baomidou.com'),
    18. (3, '柯南', 28, 'test3@baomidou.com'),
    19. (4, '灰原哀', 21, 'test4@baomidou.com'),
    20. (5, '工藤有希子', 24, 'test5@baomidou.com');
    复制代码
  • 导入依赖
    1. <dependencies>
    2.    
    3.     <dependency>
    4.         <groupId>org.springframework.boot</groupId>
    5.         <artifactId>spring-boot-starter-web</artifactId>
    6.     </dependency>
    7.    
    8.     <dependency>
    9.         <groupId>org.springframework.boot</groupId>
    10.         <artifactId>spring-boot-starter-test</artifactId>
    11.         <scope>test</scope>
    12.     </dependency>
    13.    
    14.     <dependency>
    15.         <groupId>io.swagger</groupId>
    16.         <artifactId>swagger-annotations</artifactId>
    17.         <version>1.6.3</version>
    18.     </dependency>
    19.    
    20.     <dependency>
    21.         <groupId>org.projectlombok</groupId>
    22.         <artifactId>lombok</artifactId>
    23.     </dependency>
    24.    
    25.     <dependency>
    26.         <groupId>mysql</groupId>
    27.         <artifactId>mysql-connector-java</artifactId>
    28.         <version>8.0.26</version>
    29.     </dependency>
    30.    
    31.     <dependency>
    32.         <groupId>com.baomidou</groupId>
    33.         <artifactId>mybatis-plus-boot-starter</artifactId>
    34.         <version>3.5.2</version>
    35.     </dependency>
    36.    
    37.     <dependency>
    38.         <groupId>com.baomidou</groupId>
    39.         <artifactId>mybatis-plus-generator</artifactId>
    40.         <version>3.5.2</version>
    41.     </dependency>
    42.    
    43.     <dependency>
    44.         <groupId>org.apache.velocity</groupId>
    45.         <artifactId>velocity-engine-core</artifactId>
    46.         <version>2.3</version>
    47.     </dependency>
    48.    
    49.    
    50.     <dependency>
    51.         <groupId>org.freemarker</groupId>
    52.         <artifactId>freemarker</artifactId>
    53.         <version>2.3.31</version>
    54.     </dependency>
    55.    
    56.     <dependency>
    57.         <groupId>com.ibeetl</groupId>
    58.         <artifactId>beetl</artifactId>
    59.         <version>3.8.1.RELEASE</version>
    60.     </dependency>
    61. </dependencies>
    复制代码
  • yaml
    1. #设置开发环境
    2. spring:
    3.   datasource:
    4.     username: root
    5.     password: 123456
    6.     driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    7.     url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    8. mybatis-plus:
    9.         #配置日志  log-impl:日志实现
    10.   configuration:
    11.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    12.   global-config:
    13.     db-config:
    14.       logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
    15.       logic-delete-value: 1 # 逻辑已删除值(默认为 1)
    16.       logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
    复制代码
  • 在测试类里写入主方法并修改参数,运行即可【配置已经封装好了】
    1. public static void main(String[] args) {
    2.    
    3.     //这里按着给的注解修改参数即可
    4.    
    5.         //手动配置数据源
    6.         String url="jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";   //注意修改数据库名
    7.         String name="root";
    8.         String password="123456";
    9.         //数据库表的设置
    10.         List<String> listTable = Arrays.asList("user");  //设置需要自动代码生成的表名
    11.         List<String> listTableSuffix = Arrays.asList("_b");    //设置 过滤 表的后缀
    12.         List<String> listTablePrefix = Arrays.asList("t_","c_"); //设置 过
    13.         //基本信息
    14.         String author = "柯南";    //作者
    15.         String parent = "com";   //父包名
    16.         String module = "example";   //模块包名
    17.    
    18.            
    19.            
    20.     //已封装好,无需更改。可按照需求进行注释
    21.    
    22.         //1、配置数据源
    23.         FastAutoGenerator.create(url, name, password)
    24.                 //2、全局配置
    25.                 .globalConfig(builder -> {
    26.                     builder.author(author) // 设置作者名
    27.                             .outputDir(System.getProperty("user.dir") + "/src/main/java")   //设置输出路径:项目的 java 目录下【System.getProperty("user.dir")意思是获取到项目所在的绝对路径】
    28.                             .commentDate("yyyy-MM-dd hh:mm:ss")   //注释日期
    29.                             .dateType(DateType.ONLY_DATE)   //定义生成的实体类中日期的类型 TIME_PACK=LocalDateTime;ONLY_DATE=Date;
    30.                             .fileOverride()   //覆盖之前的文件
    31.                             .enableSwagger()   //开启 swagger 模式
    32.                             .disableOpenDir();   //禁止打开输出目录,默认打开
    33.                 })
    34.                 //3、包配置
    35.                 .packageConfig(builder -> {
    36.                     builder.parent(parent) // 设置父包名
    37.                             .moduleName(module)   //设置模块包名
    38.                             .entity("entity")   //pojo 实体类包名
    39.                             .service("service") //Service 包名
    40.                             .serviceImpl("service.impl") // ***ServiceImpl 包名
    41.                             .mapper("mapper")   //Mapper 包名
    42.                             .xml("mapper.xml")  //Mapper XML 包名
    43.                             .controller("controller") //Controller 包名
    44.                             .other("config")    //自定义包名(一般不在这里生成,而是后面编写的时候自己建包)
    45.                             .pathInfo(Collections.singletonMap(OutputFile.mapper.xml, System.getProperty("user.dir")+"/src/main/resources/mapper"));    //配置 mapper.xml 路径信息:项目的 resources 目录下
    46.                 })
    47.                 //4、策略配置
    48.                 .strategyConfig(builder -> {
    49.                     builder
    50.                             .enableCapitalMode()    //开启大写命名
    51.                             .enableSkipView()   //创建实体类的时候跳过视图
    52.                             .addInclude(listTable) // 设置需要生成的数据表名
    53.                             .addTableSuffix(listTableSuffix) //设置 过滤 表的后缀
    54.                             .addTablePrefix(listTablePrefix) // 设置 过滤 表的前缀
    55.                             //4.1、实体类策略配置
    56.                             .entityBuilder()
    57.                             .enableChainModel() //开启链式模型
    58.                             //.disableSerialVersionUID()  //默认是开启实体类序列化,可以手动disable使它不序列化。由于项目中需要使用序列化就按照默认开启了
    59.                             .enableTableFieldAnnotation()       // 开启生成实体时生成字段注解
    60.                             .enableLombok() //开启 Lombok
    61.                             .versionColumnName("version")   //乐观锁字段名(数据库)
    62.                             .versionPropertyName("version") //乐观锁属性名(实体)
    63.                             .logicDeleteColumnName("deleted")   //逻辑删除字段名(数据库)
    64.                             .logicDeletePropertyName("deleteFlag")  //逻辑删除属性名(实体)
    65.                             .naming(NamingStrategy.underline_to_camel)  //数据库表映射到实体的命名策略:默认是下划线转驼峰命。这里可以不设置
    66.                             .columnNaming(NamingStrategy.underline_to_camel)    //数据库表字段映射到实体的命名策略:下划线转驼峰命。(默认是和naming一致,所以也可以不设置)
    67.                             .addTableFills(
    68.                                     new Column("create_time", FieldFill.INSERT),
    69.                                     new Column("modify_time", FieldFill.INSERT_UPDATE)
    70.                             )   //添加表字段填充,"create_time"字段自动填充为插入时间,"modify_time"字段自动填充为插入修改时间
    71.                             .idType(IdType.AUTO)    //设置主键自增
    72.                             //4.2、Controller策略配置
    73.                             .controllerBuilder()
    74.                             .enableHyphenStyle()    //开启驼峰连转字符
    75.                             .formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController
    76.                             .enableRestStyle()  //开启生成 @RestController 控制器
    77.                             //4.3、service 策略配置
    78.                                 .serviceBuilder()
    79.                             .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService
    80.                             .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl
    81.                             //4.4、Mapper策略配置
    82.                             .mapperBuilder()
    83.                             .superClass(BaseMapper.class)   //设置父类
    84.                             .enableBaseResultMap()  //启用 BaseResultMap 生成
    85.                             .enableBaseColumnList() //启用 BaseColumnList
    86.                             .formatMapperFileName("%sMapper")   //格式化 mapper 文件名称
    87.                             .enableMapperAnnotation()       //开启 @Mapper 注解
    88.                             .formatXmlFileName("%sXml") //格式化Xml文件名称
    89.                             .formatMapperFileName("%sMapper");   //格式化Mapper文件名称
    90.                 })
    91.                 //5、模板
    92.                 .templateEngine(new VelocityTemplateEngine())
    93.                 /*
    94.                     模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker(以下两个引擎用哪个就保留哪个)
    95.                    .templateEngine(new BeetlTemplateEngine())
    96.                    .templateEngine(new FreemarkerTemplateEngine())
    97.                  */
    98.                     .templateEngine(new FreemarkerTemplateEngine())        //本人选择了Freemarker
    99.                 //6、执行
    100.                 .execute();
    101.     }
    复制代码
  • 运行结果:

    生成的包:

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表