問題
sql查詢需要根據條件動態修改排序欄位以及升降序;
剛開始嘗試在sql中直接使用choose when進行判斷:
<choose>
<when test="flag== '5'">
order by A_DATE desc
</when>
<otherwise>
order by B_DATE asc
</otherwise>
</choose>
此方式執行時,始終進不了判斷,
解決方案
使用 order by ${order} ${orderType}進行判斷,在傳遞查詢條件的時候,將需要排序的欄位注入
if(StringUtil.isBlank(isImport) || "5".equals(flag)){
condition.put("order", "A_DATE ");
condition.put("orderType", "desc");
}else if(Constants.VEHICLE_IMPORT_TYPE.RELATEIMPORT.equals(flag)){
condition.put("order", "B_DATE ");
condition.put("orderType", "asc");
}
執行后sql為 order by A_DATE desc 或 order by B_DATE asc,
如此便解決問題,
注意
order by ${order} ${orderType} 不能使用
order by #{order} #{orderType},否在執行后sql會是order by ‘A_DATE’ ‘desc’ 或 order by ‘B_DATE’ ‘asc’ 導致sql執行報錯,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/262983.html
標籤:其他
下一篇:mysql的常用指令以及增刪改查
