MyBatisフレームワークを使用してMySQLデータベースを操作する場合、着信文字列priceFlagの値が「0」であると判断されると、価格属性の降順でソートされます。次のxmlステートメントは無効です。
<if test="priceFlag != null and priceFlag == '0'">
ORDER BY price DESC
</if>
理由分析:
MyBatisは解析にOGNL式を使用します。OGNL式では、「0」は文字に解析されます。javaは厳密に型指定されているため、charとStringは等しくないため、ifタグのSQLは解析されません。
解決策:
この問題を解決するには、ifテストの判断ステートメントを次のいずれかの方法に変更します。
<if test='"0" == priceFlag'>
または
<if test='"0".equals(priceFlag)'>
または
<if test="'0'.toString() == priceFlag">
変更が完了した後、SQLステートメントを解析できます。