news 2026/5/28 2:04:50

SpringBoot学习日记——DAY07(mybatis-plus代码生成器)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot学习日记——DAY07(mybatis-plus代码生成器)

今天对MyBatis-Plus的代码生成器展开了学习:

1.使用MyBatis-Plus的代码生成器完成代码自动生成:

步骤如下:

1.1编写application.yml:

要在文件里编写上url,username,password,还有swagger的配置原则,还有mybatis-plus的一些配置,如日志等。

spring: datasource: url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8 username: root password: dzx123123 mvc: pathmatch: matching-strategy: ant_path_matcher mybatis-plus: mapper-locations: classpath*:/mapper/**/*.xml type-aliases-package: com.djw.entity configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

1.2再编写一个测试单元,用于开启代码生成器:

package com.djw; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class Day08DemoApplicationTests { @Test void contextLoads() { FastAutoGenerator.create("jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8", "root", "密码") .globalConfig(builder -> { builder.author("djw") // 设置作者a .enableSwagger() // 开启 swagger 模式 .fileOverride() // 覆盖已生成文件 .outputDir(".\\src\\main\\java"); // 指定输出目录 }) .packageConfig(builder -> { builder.parent("com.djw") // 设置父包名 .moduleName("");// 设置父包模块名 //.pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://")); // 设置mapperXml生成路径 }) .strategyConfig(builder -> { builder.addInclude("channel") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder().enableLombok() //开启lombok .enableChainModel()//开启链式编程 .controllerBuilder().enableRestStyle();//开启restController // .logicDeletePropertyName("deleted") // .logicDeleteColumnName("deleted");//配置逻辑删除处理 }) .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); } }

1.3编写对应的Controller

package com.djw.controller; import com.djw.entity.Channel; import com.djw.service.IChannelService; import com.djw.util.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.swing.text.html.StyleSheet; import java.util.List; /** * <p> * 栏目表 前端控制器 * </p> * * @author djw * @since 2026-05-27 */ @RestController @RequestMapping("/channel") @Api("频道控制类") public class ChannelController { @Autowired private IChannelService iChannelService; @ApiOperation("查询列表") @GetMapping public Result selectList(){ List<Channel> list = iChannelService.list(); return Result.success().setData("list",list); } @ApiOperation("按id查询") @GetMapping("/{id}") public Result selectById(@PathVariable Integer id){ Channel byId = iChannelService.getById(id); return byId!=null?Result.success().setData("channel",byId):Result.error(); } @ApiOperation("保存频道") @PostMapping public Result insert(@RequestBody Channel channel){ iChannelService.save(channel); return Result.success().setData("channel",channel); } @PutMapping @ApiOperation("更新频道") public Result update(@RequestBody Channel channel){ boolean b = iChannelService.updateById(channel); return b?Result.success().setData("channel",channel):Result.error(); } @DeleteMapping @ApiOperation("删除频道") public Result delete(@RequestBody List<Integer> ids){ boolean b = iChannelService.removeByIds(ids); return b?Result.success().setData("channel",ids):Result.error(); } }

1.4编写对应的所需的config,swagger和自动填充的配置

package com.djw.config; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; /** * @author djw */ @Configuration public class SwaggerConfig { @Bean public Docket apiConfig() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } public ApiInfo apiInfo(){ return new ApiInfoBuilder() .title("董济维的项目") .description("这是一个项目...") .contact(new Contact("董济维","http://www.itszb.com","1918431841@qq.com")) .version("1.0") .build(); } }
package com.djw.config; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; // java example @Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("开始插入填充..."); this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class,LocalDateTime.now()); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); } @Override public void updateFill(MetaObject metaObject) { log.info("开始更新填充..."); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } }

接下来就可以运行测试类的操作就好了;

2.使用MyBatisX来实现代码自动生成

2.1在idea中完成数据库的配置:

2.2右键选用的表使用MyBatisX-Generator

2.3配置

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 2:03:36

008、YOLO 数据标注格式详解:YOLO txt、COCO JSON、VOC XML 互转工程方案

008、YOLO 数据标注格式详解&#xff1a;YOLO txt、COCO JSON、VOC XML 互转工程方案 一个让我熬夜到凌晨三点的标注格式问题 去年做工业缺陷检测项目&#xff0c;甲方给了5000张PCB板图像&#xff0c;标注格式是VOC XML。我习惯用YOLOv5训练&#xff0c;直接拿脚本转成YOLO tx…

作者头像 李华
网站建设 2026/5/28 2:03:05

手把手教你配置鼎捷T100二次开发环境:从模块、表格到函数的命名规则全解析(附实战示例)

鼎捷T100二次开发实战指南&#xff1a;从环境搭建到命名规范全解析1. 开发环境准备与基础概念鼎捷T100作为企业级ERP系统&#xff0c;其二次开发环境与传统软件开发有显著差异。初次接触的开发者在配置环境时往往会遇到各种"水土不服"的情况。我们先从最基础的开发工…

作者头像 李华
网站建设 2026/5/28 2:02:04

品牌推广怎么少走弯路:这 10 个误区别踩

很多人一提品牌问题&#xff0c;第一反应是 Logo 不够高级、颜色没选对、海报不够好看。但真实情况往往不是这样。多数品牌做不好&#xff0c;不是某一个设计细节翻车&#xff0c;而是定位、视觉、文案、体验和业务状态对不上。你说自己专业&#xff0c;页面却很乱&#xff1b;…

作者头像 李华