# 背景

信息系统开发过程中，存在大量的根据表单查询数据的页面。在通常的模式下，开发人员需要对前端传来的复杂的表单（根据表单中每个参数是否提供、参数作用的数据字段等）进行逐一判断并拼装查询条件，进而完成查询工作。

#### 传统模式的弊端主要有以下几点：

1. 查询表单规模越大，后端查询条件拼装越复杂；
2. 后端的处理逻辑代码臃肿，不易维护和扩展；
3. 前后端分离的背景下，表单变化是否和后端逻辑对应，难以检查。

#### 针对以上几点问题，commons-jpa项目提供了对应的解决方案：

1. 查询条件拼装逻辑封装在工具类中；
2. 查询逻辑定义在QO(Query Object，查询条件对象，下同)中，可以通过简单的QO配置修改完成查询逻辑的修改；
3. QO的属性和查询表单的字段一一对应，易于检查。
