如何根据已填充的字段数进行搜索

时间:2013-05-28 01:03:54

标签: java mysql java-ee

我正在实施一项搜索,其中用户需要填写不同的字段才能进行搜索,但我不确定如何搜索用户是否填写了某些字段。

让我们说我要求他们填写姓名,家庭,年龄,城市和国家

用户可能会留下任何空白,因此我应根据填写的搜索进行搜索。

例如,如果填写了姓名和家庭,只需搜索姓名和家庭,如果姓名,家庭和国家/地区已填写,请搜索包含所有这三者的记录。

我正在使用预准备语句,如果我使用Persitance API怎么样?

         ps.setString(1, "Name");
         ps.setString(2, "Family");
         ps.setint(3, "age");
         ps.setString(4, "city");
         ps.setString(5,"country");

查询

 SELECT * FROM Customer WHERE name = ? AND family = ? AND age = ? AND city = ? AND country = ?

3 个答案:

答案 0 :(得分:1)

您需要删除引用未指定字段的表达式。

您可以拥有仅包含请求字段的SortedMap<String, Object>。迭代并使用where构建SQL StringBuilder子句以及设置参数值。

有些ORM会为你做这件事。

答案 1 :(得分:1)

如果非常复杂,这种情况似乎需要Hibernate Criteria Query API

之类的东西

答案 2 :(得分:1)

Squiggle SQL Builder可能适用于更简单的情况。