专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
今天看啥  ›  专栏  ›  芋道源码

妙用MyBatis-Plus,12个实战技巧解锁新知识

芋道源码  · 公众号  · Java  · 2024-12-21 17:37
    

主要观点总结

本文介绍了使用MyBatisPlus进行优化的一些技巧,包括避免使用isNull判断、明确Select字段、批量操作方法替代循环、Exists方法子查询、使用orderBy代替last、LambdaQuery确保类型安全、用between代替ge和le、排序字段注意索引、分页参数设置、条件构造处理Null值、查询性能追踪、枚举类型映射、自动处理逻辑删除、乐观锁更新保护、递增和递减等。

关键观点总结

关键观点1: 避免使用isNull判断

使用具体的默认值来提高代码的可读性和维护性,避免NULL值使索引失效、增加CPU开销和占用额外的存储空间。

关键观点2: 明确Select字段

避免大量无用字段的网络传输开销,利用索引覆盖、避免回表查询、减少数据库解析和序列化的负担,降低内存占用。

关键观点3: 批量操作方法替代循环

减少数据库连接的创建和销毁开销,批量操作可以在一个事务中完成,提高数据一致性,显著减少网络往返次数,提升吞吐量。

关键观点4: Exists方法子查询

使用EXISTS基于索引的快速查询,当外表数据量大时,EXISTS的性能优势更明显。

关键观点5: 使用orderBy代替last

避免直接字符串拼接和SQL注入风险,动态SQL可能破坏SQL语义完整性,last会绕过MyBatis-Plus的安全检查机制。

关键观点6: LambdaQuery确保类型安全

编译期类型检查,避免字段名拼写错误,提高代码的可维护性和可读性。

关键观点7: 用between代替ge和le

生成的SQL更简洁,减少解析开销,数据库优化器可以更好地处理范围查询。

关键观点8: 排序字段注意索引

索引天然具有排序特性,可以避免额外的排序操作,利用索引排序可以实现流式读取。

关键观点9: 分页参数设置

控制单次查询的数据量,提高首屏加载速度,减少网络传输压力,数据库资源利用更合理。

关键观点10: 条件构造处理Null值

优雅处理空值,避免无效条件,减少代码中的if-else判断,提高代码可读性。

关键观点11: 查询性能追踪

使用性能追踪工具自动记录查询耗时,帮助识别慢查询,优化数据库性能。

关键观点12: 枚举类型映射

使用枚举类型映射提高代码类型安全和可读性,自动处理数据库和枚举之间的转换。

关键观点13: 自动处理逻辑删除

通过逻辑删除注解自动过滤已删除数据,支持数据恢复,减少手动编写删除逻辑。

关键观点14: 乐观锁更新保护

使用乐观锁版本号自动处理并发更新冲突,提高数据一致性和并发性能。

关键观点15: 递增和递减:setIncrBy 和 setDecrBy

使用setIncrBy和setDecrBy进行递增和递减操作,避免使用setSql,提高代码可维护性和安全性。


文章预览

👉 这是一个或许对你有用 的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 「 芋道快速开发平台 」 知识星球。 下面是星球提供的部分资料:   《项目实战(视频)》 :从书中学,往事上 “练 ” 《互联网高频面试题》 :面朝简历学习,春暖花开 《架构 x 系统设计》 :摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》 :系统学习,互联网主流技术栈 《必读 Java 源码专栏》 :知其然,知其所以然 👉 这是一个或许对你有用的开源项目 国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。 功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能: Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览