小编典典

如何根据用户选择动态生成SQL查询?

java

我需要创建一个GUI,用户可以使用它选择几个属性,这些属性将用于查询数据库以找到合适的人。我正在寻找有关如何根据用户的选择动态生成数据库查询的想法。

查询将包含几个字段,但为便于理解,我仅在下面举例说明三个字段:

  • 职业 -可以有0到n个职业字符串。如果给出了占用字符串,则其中之一必须匹配。

  • 年龄 -年龄可以表示为:

    1. 完全匹配(30)
    2. 范围(例如30-40)
    3. 小于一个值(-40)
    4. 大于一个值(30-)

年龄参数在查询中是可选的。另外,用户可以指定年龄是否为必需参数。如果不需要,并且没有年龄的人是他/她的个人资料,则此人的年龄标准将被忽略。

  • 身高 -与年龄相似

查询示例:

没有给出标准:

select * from persons

仅职业:

select * from persons where occupation = 'dentist'

有几种职业:

select * from persons where (occupation = 'dentist' or occupation = 'engineer')

年龄大于数值,并且必须存在于个人资料中:

select * from persons where age >= 30

高度已作为范围给出,并且不需要在个人资料中存在:

select * from persons where (height is null or (height >= 30 and height <= 40))

不同标准的组合:

select * from persons where occupation = 'dentist' and age >= 30 and (height is null or (height >= 30 and height <= 40))

我已经实现了能够将查询生成为字符串的代码,但是它当然不是很漂亮。我正在寻找实现这一目标的最有效,最漂亮的方法。


阅读 345

收藏
2020-11-26

共1个答案

小编典典

在Hibernate中,您可以使用Criteria查询。

在Toplink中,我们获得了Expression和ExpressionBuilder

2020-11-26