Ich bin neu über myBatis und ich muss wo Aussage in meine Abfrage setzen.MyBatis: Dynamic wo Zustand
Mein Mapper ist auf diese Weise definiert:
<select id="findMyTableByWhereCondition" parameterType="map" resultMap="mytable">
SELECT *
FROM mytable m
<where>#{whereCondition}</where>
</select>
My Dao:
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);
}
Wenn Diese Abfrage auszuführen, i "Invalid relationalen Operator" erhalten. Was ist die beste Vorgehensweise, um diese Art von Anfragen zu bearbeiten? Ich muss es ersetzen über das "wo", denn das könnte sich zu oft ändern und es könnte sogar sehr komplex sein.
Vielen Dank im Voraus
Die Variable 'param' in Ihrem Beispiel wird nicht verwendet. Was ist der 'whereCondition' String, den Sie an' sqlSession.selectList() 'übergeben? –
Ich denke, Sie verwenden die API nicht korrekt. Sehen Sie sich die Beispiele in dieser Frage an: [Mehrere Argumente in ein SELECT übergeben, ohne ein komplexes Objekt zu verwenden] (http://stackoverflow.com/questions/9308210/passing-multiple-arguments-into-a-select-without- using-a-complex-object), das ein Feld/Wert pro Map-Element in der WHERE-Bedingung verwendet. –
@MickMnemonic Aber ich muss alle wo ersetzen Bedingung – Skizzo