【发布时间】:2012-01-18 09:49:46
【问题描述】:
谁能推荐一些SQL解析器可用于java的好的实现示例或使用场景。
我有一个应用程序,我们需要根据某些参数、排序标准等过滤要在 UI 上显示的数据。 我对此有一些疑问:
1)这可以是一个理想的解决方案吗?
2)UI如何发挥作用,为Java层提供查询?
【问题讨论】:
标签: java search sql-parser
谁能推荐一些SQL解析器可用于java的好的实现示例或使用场景。
我有一个应用程序,我们需要根据某些参数、排序标准等过滤要在 UI 上显示的数据。 我对此有一些疑问:
1)这可以是一个理想的解决方案吗?
2)UI如何发挥作用,为Java层提供查询?
【问题讨论】:
标签: java search sql-parser
您想在您的 java 应用程序中动态构建 sql 查询,然后使用此 sql 获取数据吗?假设你有一个这样的 sql:
select salary from emp where dept='sales'
用户从 UI 中选择其他一些过滤器后,例如年龄 > 40,那么 sql 将是这样的:
select salary from emp where dept='sales' and age > 40
当然,您可能还想添加更复杂的过滤器或添加排序子句。
为了实现这一点,完整的SQL Parser 很有帮助,这里有一个演示,说明如何基于 Java SQL 解析器Deconstruct, Modify, Rebuild a SQL statement。
【讨论】:
select field1,field2 from mydomain where field1 ='abc' and field2='cde' orderby field1 desc limit 10,20这样的选择表达式像这样的表达式将从 UI 传递到 java API。我希望 Java API 解析该选择表达式以获取这些参数并形成要传递给 DB 的动态 SQL 字符串。你有什么建议?
我不知道 SQL 解析器应该是什么。应用程序不必解析 SQL。 Thay 必须执行 SQL 查询,因此可能会动态生成 SQL 查询。但解析 SQL 的是数据库,而不是应用程序。
UI 通常不向服务层提供查询。 UI 不必知道数据是如何持久化的以及要执行哪些查询。这不是它的责任。 UI 应该只将 Filter 或 Criteria 对象传递给服务层,服务层将过滤器或条件转换为 SQL 查询,执行查询,将结果转换为 Java 对象,并将这些对象返回给 UI,UI 显示这些对象。
【讨论】: