MyBatisGX 0.2.0 发布:正式引入 MGXQL 对象查询语言
大家好,经过一段时间的设计与重构,MyBatisGX 0.2.0 正式发布。
这是 MyBatisGX 自发布以来最重要的一次版本更新,也是查询体系正式成熟的一个里程碑。
本次版本最大的变化,是正式引入了MGXQL(MyBatisGX Query Language),并完成了整个查询体系的统一。
🌟 MGXQL 正式发布
MGXQL 是 MyBatisGX 全新的对象查询语言。
在 0.2.0 中:
- 方法名查询统一转换为 MGXQL
- QueryEntity 查询统一转换为 MGXQL
- 支持直接编写 MGXQL
@Statement正式由 MGXQL 替代
也就是说,以后 MyBatisGX 所有查询方式,最终都会落到同一套查询模型上。
这样带来的好处包括:
- 查询能力更加统一
- SQL 生成逻辑更加简单
- 后续扩展聚合、关联查询等能力更加容易
- 不同查询方式之间能够完全互通
MGXQL 也成为了 MyBatisGX 后续演进的重要基础,未来新增的查询能力都会优先构建在 MGXQL 之上,而不再针对方法名查询、QueryEntity 等分别实现。
✨ 功能增强
除了 MGXQL,本次版本还增加了一些比较实用的能力。
SelectDao 新增独立排序接口
排序查询现在拥有更加独立、清晰的 API。
QueryEntity 支持忽略查询字段
新增:
@QueryColumn(ignore=true)被标记的字段不会参与自动条件生成,可以作为普通参数使用,让 QueryEntity 的表达能力更加灵活。
方法名查询自动处理歧义
对于存在字段歧义的场景,框架能够自动进行处理,减少手工指定的成本。
🚀 底层重构
本次版本还完成了 SQL 生成引擎的重构。
整个 SQL 生成过程统一建立在 MGXQL 查询模型之上,为后续功能扩展提供了更加稳定的基础。
同时调整了@Dynamic的执行优先级。
现在@Dynamic拥有最高优先级,可以覆盖 MGXQL 中定义的动态表达式,使动态 SQL 的行为更加符合预期。
🌱 AI 生态
随着越来越多开发者开始借助 AI 编写代码,本次版本同步发布了官方MyBatisGX AI Skill。
它能够帮助 AI 更准确地理解:
- MyBatisGX 的设计理念
- 查询方式
- 注解能力
- 最佳实践
从而帮助 AI 更准确地理解 MyBatisGX,在代码生成、问题解答和开发过程中提供更加符合框架设计理念的建议。
后续也会持续维护和完善这部分内容。
🙏 致谢
感谢每一位参与 MyBatisGX 的朋友。
特别感谢:
- ai2ming:对注解关联查询进行了完整测试,帮助验证了相关功能的稳定性。
- luo-zhan:对 QueryEntity 查询进行了测试,并贡献了「方法名查询自动处理歧义」PR,使方法名查询在复杂场景下拥有更好的使用体验。
感谢所有关注、试用、参与讨论、反馈和贡献 MyBatisGX 的朋友。
对于仍在不断成长的 MyBatisGX 来说,每一个 Issue、每一个建议、每一个 Pull Request 都十分珍贵。
开源项目能够不断前进,离不开每一位贡献者的支持,你们的反馈和贡献正在帮助 MyBatisGX 变得更好。
欢迎体验 MyBatisGX,也欢迎提出建议,一起把它打磨得更好。
项目地址
- 官网:http://www.mybatisgx.com
- GitHub:https://github.com/cris-xue/mybatisgx
如果觉得项目不错,欢迎 Star、Issue 或参与讨论。