hyadijxp 发表于 2016-11-25 08:29:13

mybatis使用foreach标签实现order by

在mybatis select标签配置

<if test="orderBy!=null">
      <foreach collection="orderBy" item="order" open="order by " separator="," close="">
                #{order}
      </foreach>
      <if test="orderDesc!=null">#{orderDesc}</if>
      <if test="orderDesc==null">desc</if>
</if>

    在bean中声称

public String[] orderBy = new String[]{"SEQNO"};
public String orderDesc;
get...
set...

    mybatis生成sql和传递的参数

2011-12-31 10:40:02,312 DEBUG ==>Executing: SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = ? order by ? desc
2011-12-31 10:40:02,312 DEBUG ==> Parameters: yqdoqdf1325055012078(String), SEQNO(String)

但结果没有按照SEQNO排序

mybatis最终执行的sql是:SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = 'yqdoqdf1325055012078' order by 'SEQNO' desc 而不是想要的SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = 'yqdoqdf1325055012078' order by SEQNO desc
解决方案#
把mybatis的sql配置

<foreach collection="orderBy" item="order" open="order by " separator="," close="">
   <font color="red">#{order}</font>
</foreach>
<if test="orderDesc!=null">#{orderDesc}</if>

修改成

<foreach collection="orderBy" item="order" open="order by " separator="," close="">
      <font color="red">${order}</font>
</foreach>
<if test="orderDesc!=null">${orderDesc}</if>
页: [1]
查看完整版本: mybatis使用foreach标签实现order by