美文网首页
mybatis动态order by 排序问题 2021-09-

mybatis动态order by 排序问题 2021-09-

作者: 小沙坨 | 来源:发表于2021-09-17 12:48 被阅读0次

1、问题

sql查询需要根据条件动态修改排序字段以及升降序;
刚开始尝试在sql中直接使用choose when进行判断:

<choose>
      <when test="flag== '5'">
             order by A_DATE desc
        </when>
        <otherwise>
                order by B_DATE asc
        </otherwise>
 </choose>

此方式执行时,始终进不了判断。

2、解决方案

使用 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。
如此便解决问题。

3、注意

order by {order}{orderType} 不能使用
order by #{order} #{orderType},否在执行后sql会是order by ‘A_DATE’ ‘desc’ 或 order by ‘B_DATE’ ‘asc’ 导致sql执行报错。
————————————————
版权声明:本文为CSDN博主「静夜浮舟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43996353/article/details/113977947

相关文章

网友评论

      本文标题:mybatis动态order by 排序问题 2021-09-

      本文链接:https://www.haomeiwen.com/subject/phwjgltx.html