1. 项目背景与核心价值
报表查询功能在企业级应用中是个高频刚需场景。做过报表开发的同行都深有体会:业务部门今天要按A条件筛选,明天要加B字段过滤,后天又要求支持C和D的组合查询。传统方案要么写死查询条件,要么用大量if-else堆砌,维护起来简直是场灾难。
这个项目通过SpringBoot整合动态SQL与条件编排器,实现了查询条件的自由组合。举个真实案例:某零售企业的销售报表原本有20多个固定筛选条件,每次新增条件都需要改代码上线。改造后,业务人员通过前端勾选就能自由组合查询条件,开发效率提升70%以上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术栈
- SpringBoot 2.7:基础框架
- MyBatis 3.5:ORM层
- 动态SQL:XML配置+OGNL表达式
- 条件编排器:自定义DSL设计
- Jackson:参数序列化
2.2 核心设计思路
采用"配置化+解释器"模式:
- 前端传递JSON格式的查询条件描述
- 条件编排器解析JSON生成抽象语法树(AST)
- 动态SQL构建器遍历AST生成最终SQL
java复制// 条件描述示例
{
"conditions": [
{
"field": "order_date",
"operator": "BETWEEN",
"value": ["2023-01-01", "2023-12-31"]
},
{
"logic": "OR",
"conditions": [
{"field": "status", "operator": "IN", "value": [1,3,5]},
{"field": "amount", "operator": ">=", "value": 5000}
]
}
]
}
3. 动态SQL实现细节
3.1 MyBatis动态SQL方案对比
| 方案 | 优点 | 缺点 |
|---------------------|-----
