为什么我不再允许业务代码直接使用 MyBatis-Plus 的 insert 和 updateById
从一次 JPA 迁移到 MyBatis-Plus 的真实踩坑出发,重新审视 BaseMapper 中 insert 和 updateById 在复杂业务系统中的维护成本,并通过 BizBaseMapper + BizSqlInjector 对通用写能力进行项目级裁剪。
这里汇总所有包含可运行 Demo 或附件的文档。列表会根据文档中的 Demo 附件链接自动更新。
从一次 JPA 迁移到 MyBatis-Plus 的真实踩坑出发,重新审视 BaseMapper 中 insert 和 updateById 在复杂业务系统中的维护成本,并通过 BizBaseMapper + BizSqlInjector 对通用写能力进行项目级裁剪。
记录 Java 8 服务从 Alpine 切换到 Debian 后第三方接口签名异常的生产问题,以及两个月后通过最小复现、三组 Dockerfile 对照实验最终定位 String.getBytes() 默认字符集风险的过程。
从一次 Java 8 Docker 签名问题继续追查 Alpine Locale 行为,验证环境变量被设置并不等于对应 Locale 数据真实存在,并说明这一结论的版本和镜像边界。
记录一种轻量 Mapper 集成测试方式:修改 Mapper、XML 或 SQL 后,不启动完整 Spring Boot 应用,只加载 DataSource、MyBatis-Plus 和目标 Mapper,以尽快验证刚刚的调整。
记录一次 Spring Boot 2.2.10.RELEASE + MyBatis 项目中 PageHelper 两种分页写法的对比与排查。通过 doSelectPageInfo、ISelect、Page、PageInfo 以及 MyBatis 查询结果的关系,解释为什么第一种写法会出现泛型失真,以及为什么显式接收 List<T> 再构造 PageInfo 更容易维护。
记录一次 Spring Boot 2.2.10.RELEASE + Micrometer 1.3.14 环境中的真实排查过程:自定义 AsyncConfigurer 接入线程池监控后,Prometheus 端点仍然正常,但 jvm_* 指标全部消失。通过对照实验、延迟绑定验证和 Bean 生命周期分析,最终定位到 MeterRegistry 被提前初始化。