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 [java.sql.PreparedStatement] ==> Executing: SELECT * from HR_ORGANIZATION where 1=1 AND UPORG = ? order by ? desc
2011-12-31 10:40:02,312 DEBUG [java.sql.PreparedStatement] ==> 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值