0

ユーザーが検索を行うためにさまざまなフィールドに入力する必要がある検索を実装していますが、ユーザーが一部のフィールドに入力しない場合の検索方法がわかりません。

名前、家族、年齢、都市、国を記入するように頼んでいるとしましょう

ユーザーはこれらのいずれかを空白のままにしておくことができるため、入力されたものに基づいて検索を行う必要があります。

たとえば、名前と家族が入力されている場合は、名前と家族だけを検索し、名前、家族、および国が入力されている場合は、これら 3 つすべてを含むレコードを検索します。

プリペアドステートメントを使っているのですが、Persistance 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 = ?
4

3 に答える 3

1

未指定のフィールドを参照する式を削除する必要があります。

SortedMap<String, Object>要求されたフィールドのみを含む を使用できます。それを反復し、パラメータ値の設定とともにwherea を使用して SQL 句を作成します。StringBuilder

一部の ORM はこれを行います。

于 2013-05-28T01:06:59.373 に答える
1

非常に複雑な場合、この種のシナリオはHibernate Criteria Query APIのようなものを必要とするようです。

于 2013-05-28T01:17:00.470 に答える