我想創建一個MyBatis的查詢,這將產生類似:MyBatis的「或」標準
SELECT first_field, second_filed, third_field
WHERE first_field > 1 AND (second_field > 0 OR third_field < 0)
我怎麼能構建與標準的對象?
我想創建一個MyBatis的查詢,這將產生類似:MyBatis的「或」標準
SELECT first_field, second_filed, third_field
WHERE first_field > 1 AND (second_field > 0 OR third_field < 0)
我怎麼能構建與標準的對象?
一種方式將是對extend the generated Example classes:
所生成的「實例」類包括其中謂詞的實際功能存在嵌套內部類。這個內部類總是被命名爲GeneratedCriteria。
MBG還生成一個名爲Criteria的內部類,該類擴展了GeneratedCriteria,您可以使用它將自己的函數添加到示例類中。 Eclipse Java代碼合併器不會刪除Criteria類,因此您可以添加它,而不必擔心在更新時丟失更改。
所以基本上,生成您的示例類,並添加您的自定義條件。
public Criteria multiColumnOrClause(String value1, String value2) {
addCriterion("value1 = " + value1 + " OR value2 = " + value2);
return this;
}
如果你重用它的時候,又不想爲所有的映射器做到這一點,你也可以提取邏輯的「插件」,雖然文件是缺乏對這個有點,有僅是一個例子:
據我現在瞭解,不可能用標準生成的mapper來做到這一點。要做到這一點
由於a AND (b OR c)
相同(a AND b) or (a AND c)
TestTableExample example = new TestTableExample();
example.createCriteria()
.andField1GreaterThan(1)
.andField2GreaterThan(0);
example.or(example.createCriteria()
.andField1GreaterThan(1)
.andField3LessThan(0));
然後坐下來讓SQ L優化器找出它。