当前位置: 首页 > news >正文

MyBatis-Plus实战:Spring Boot数据库操作效率提升10倍

前言

MyBatis-Plus(MP)是 MyBatis 的增强工具,无需编写 SQL 即可完成 CRUD 操作,极大提升开发效率。本文带你实战 Spring Boot 整合 MyBatis-Plus。

一、引入依赖

<!-- pom.xml -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency># application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:logic-delete-field: deletedlogic-delete-value: 1logic-not-delete-value: 0

二、实体类

@Data
@TableName("user")
public class User {@TableId(type = IdType.AUTO)private Long id;@TableField("username")private String username;private String email;private Integer age;@TableLogic  // 逻辑删除private Integer deleted;@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;
}

三、Mapper 接口

@Mapper
public interface UserMapper extends BaseMapper<User> {// 继承 BaseMapper 后,自动拥有以下方法:// - insert(entity)// - deleteById(id)// - updateById(entity)// - selectById(id)// - selectList(wrapper)// - selectPage(page, wrapper)// 无需编写 XML!
}

四、条件构造器

// 查询年龄大于18且邮箱不为空的用户
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().gt(User::getAge, 18).isNotNull(User::getEmail).orderByDesc(User::getCreateTime)
);// 模糊查询
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().likeRight(User::getUsername, "张").between(User::getAge, 20, 30)
);// 更新:年龄大于30的用户状态改为1
userMapper.update(null,new LambdaUpdateWrapper<User>().set(User::getStatus, 1).gt(User::getAge, 30)
);

五、分页查询

// 分页配置类
@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}// 分页查询
Page<User> page = new Page<>(1, 10);  // 第1页,每页10条
userMapper.selectPage(page,new LambdaQueryWrapper<User>().gt(User::getAge, 18)
);List<User> records = page.getRecords();  // 当前页数据
long total = page.getTotal();           // 总记录数
long pages = page.getPages();           // 总页数

六、代码生成器

// AutoGenerator 一键生成 Entity、Mapper、Service、Controller
AutoGenerator generator = new AutoGenerator();// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("myname");
globalConfig.setOpen(false);
generator.setGlobalConfig(globalConfig);// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/mydb","root", "123456"
).build();
generator.setDataSource(dataSourceConfig);// 策略配置
StrategyConfig strategyConfig = new StrategyConfig.Builder().addInclude("user", "order")  // 表名.entityBuilder().enableLombok().controllerBuilder().enableRestStyle().build();
generator.setStrategy(strategyConfig);generator.execute();

总结

MyBatis-Plus 让数据库操作变得简单高效。核心要点:BaseMapper 提供开箱即用的 CRUD、LambdaWrapper 类型安全的条件构造、内置分页插件、代码生成器大幅提升效率。

觉得有帮助请点赞收藏!有问题欢迎评论区交流 🚀

http://www.jsqmd.com/news/596751/

相关文章:

  • 新手入门云服务:用快马生成腾讯云龙虾养殖场可视化学习工具
  • VSCode Remote-SSH 连接失败修复(权限问题)
  • GModPatchTool:三分钟彻底解决Garry‘s Mod浏览器与启动难题
  • 针对波动计算复杂性的吸收边界条件(PML 用于一般波动方程)(Matlab代码实现)
  • 全志T113开发实战:从menuconfig到固件打包,详解Root密码配置全流程
  • 2026最权威的五大降AI率助手解析与推荐
  • Protege实战:从零构建电影知识图谱的完整指南
  • 细聊高频加热炉,靠谱的定制厂家推荐哪家? - 工业推荐榜
  • SAP ST12 Trace 实战指南:从配置到问题诊断全流程
  • WarcraftHelper终极指南:魔兽争霸3帧率解锁与性能优化完全教程
  • 告别重复造轮子:用快马平台高效生成模块化CNN代码提升开发效率
  • 光伏MPPT仿真:固定电压法+扰动观察法+电导增量法(模型版本2015a与2022b及学习建议)
  • WASM沙箱实战:如何在Rust中构建一个安全的图像处理模块(附完整代码)
  • Qwen-Image-Edit-F2P实战:QT图形界面开发指南
  • MaaFramework跨平台图像识别自动化架构解析与多语言绑定实现原理
  • 选购发芽胚芽米,湖南诺千按需定制服务靠谱不,口碑好吗 - 工业品牌热点
  • 如何用3个步骤掌握录播姬:打造你的B站直播自动录制系统
  • 告别重复街景!用ArcGIS Pro三步搞定OSM路网清洗与50米采样点生成
  • 东阳市杰业木业有限公司:吴宁街道专业承接全屋定制公司 - LYL仔仔
  • AutoGLM-Phone-9B部署常见错误排查:启动失败、调用报错?看这里
  • STM32CubeMX实战:如何用通用定时器精准实现微秒级延时(附DHT11读取示例)
  • 别再手动一个个点了!用Labelme批量标注关键点数据的3个高效技巧(附快捷键设置)
  • 深入解析LSPosed框架:5个实战技巧提升Android Hook开发效率
  • GcExcel V9.0 新特性解密:VALUETOTEXT/ARRAYTOTEXT 双函数
  • 深入解析notion-enhancer组件系统:模块化架构设计与高性能实现
  • 2026年中频加热炉专业厂家排名,价格实惠的有哪些 - 工业设备
  • 在RK3588上搞定XDMA AXI-Stream回环测试:从Verilog到Rust的完整流程与避坑指南
  • 从选型到贴片:启英泰伦CI13XX芯片硬件设计避坑指南(附PCB布局建议)
  • KIHU快狐|55寸户外触控屏IP65防水校园展示查询用
  • Scrapy框架突破中国裁判文书网多重反爬机制的Python爬虫解决方案