我正在实现一个搜索,用户需要填写不同的字段才能进行搜索,但我不确定如果用户没有填写某些字段,我将如何进行搜索。
假设我要他们填写姓名、家庭、年龄、城市和国家
用户可能会将这些中的任何一个留空,因此我应该根据已填写的进行搜索。
例如,如果填写了姓名和家庭,则只需搜索姓名和家庭;如果填写了姓名、家庭和国家/地区,则搜索包含所有这三者的记录。
我正在使用准备好的语句,如果我使用 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 = ?
最佳答案
您需要删除引用未指定字段的表达式。
你可以有一个SortedMap<String, Object>
其中仅包含请求的字段。迭代它并构建 SQL where
使用 StringBuilder
的子句以及设置参数值。
一些 ORM 会为您做这件事。
关于java - 如何根据已填写的字段数进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782406/