私はmyBatisについて新しく、クエリの中にwhereステートメントを入れる必要があります。私のマッパーがこのように定義されてMyBatis:dinamic where条件
:
<select id="findMyTableByWhereCondition" parameterType="map" resultMap="mytable">
SELECT *
FROM mytable m
<where>#{whereCondition}</where>
</select>
マイダオ:
public List<MyTalbe> findMyTableByWhereCondition(String whereCondition) {
Map<String, Object> param = new HashMap<String, Object>();
param.put("whereCondition", "m.name = 'Test' and m.surname= 'Test'");
return sqlSession.selectList("findMyTableByWhereCondition", param);
}
このクエリを実行しようとすると、私は、 "無効な関係演算子" を得ます。この種の問合せを処理するベストプラクティスは何ですか?これは頻繁に変更される可能性があり、非常に複雑なものになる可能性があるため、「どこ」に置き換える必要があります。事前
あなたの例の 'param'変数は使用されていません。あなたが 'sqlSession.selectList()'に渡す 'whereCondition'文字列は何ですか? –
APIを正しく使用していないと思います。この質問の例を見てみましょう:[複雑なオブジェクトを使わずに複数の引数をSELECTに渡す](http://stackoverflow.com/questions/9308210/passing-multiple-arguments-into-a-select-without- WHERE条件でマップ要素ごとに1つのフィールド/値を使用する複合オブジェクトを使用します。 –
@MickMnemonicしかし、私はすべての条件を置き換える必要があります – Skizzo