私は不思議ですが、パラメータを動的に入力できますか?例えば、私のようなオブジェクトいる:今、私は文をPreparedStatementsのパラメータを動的に設定する
class Fields {
private Integer id;
private String name;
public Fields(Integer id, String name) {
this.id = id;
this.name = name;
}
//Getter - setter here
}
を準備します
public void main() {
PreparedStatement ps = conn.PrepareStatement("SELECT * FROM table WHERE id = ? AND name = ?");`
}
その後、私はまあ...どのように、怠惰な私を呼び出す
Fields param = new Fields(2, "xxx");
を設定しましたPrepareStatementにparamを送信することはできますか
より良い私のポイントを説明するために
ps.setParameters(param.getAsArray())
、私は何かなどを作りたい::3210
または多分
for (Fields f: fieldList) {
sql += f + " = ?";
}
恩赦上記のための私の行方不明 "AND"/"OR" 演算子コード。私の究極の目標は、部分的なフィールドだけを塗りつぶしてエンティティクラスを渡すことによって、フィールド全体と各パラメータを作成できるようにすることです。コードはnullフィールドをスキップし、塗りつぶしフィールドをパラメータとして配置します。
まあ、好奇心のためです。
あなたは
AFAIKあなたは 'PreparedStatement'に渡すことができるものに関して制限があります。通常、データベースクエリで使用するタイプのみが許可されます。 int、varchar、blobなど 'Fields'クラスとは何ですか? –
上記のfieldsクラスはStringに限られているため、あまり有用ではありません。また、あなたが参加していて、同じ変数が再利用された場合、同じFieldオブジェクトを再利用することはできませんでした。もちろん、PreparedStatementから拡張し、これを自分で実装することもできます。 –
私のポイントをより良く説明するための情報を追加しました。つまり、エンティティオブジェクトから条件句を動的に作成し、フィールドとパラメータをエンティティオブジェクトから渡したいと思います。しかし、それだけでなく、いくつかの特定のクラスを作成し、関連フィールドを部分的に記入し、不要なものをスキップしてprepareStatementに渡すことができます。 – Magician