Mabatis 由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。
报错代码
<select id="selectXmList" resultType="java.util.Map">
SELECT DISTINCT
xm.dfsjzj,xm.xmmc,xm.xmdm,
yw.spjdmc,
sqzt.fr_name,
xm.sbsj
FROM HN_CSGCJS_SPGL_XMJBXXB xm with(nolock)
LEFT JOIN SX_PRO_SPGL_DFXMSPLCJDXXB_YW yw with(nolock) on yw.XM_DFSJZJ = xm.dfsjzj
LEFT JOIN HN_CSGCJS_SPGL_JD_SQZT sqzt with(nolock) on sqzt.XM_DFSJZJ = xm.dfsjzj
LEFT JOIN HN_CSGCJS_SPGL_TAG_GROUP tg on tg.xm_dfsjzj = xm.dfsjzj
where
xm.SJYXBS =1 and DQJD=1 and yw.SJYXBS =1 and xm.projectlev=1
<if test="tag_id != null">
and tg.tag_id = #{tag_id}
</if>
<if test="c_tag_id != null">
and tg.c_tag_id = #{c_tag_id}
</if>
<if test="spjdxh != null">
and yw.spjdxh = #{spjdxh}
</if>
<if test="fr_name != null">
and sqzt.fr_name like #{fr_name}
</if>
<if test="xmmc != null">
and xm.xmmc like #{xmmc}
</if>
<if test="xmdm != null">
and xm.xmdm like #{xmdm}
</if>
<if test="orderCause != null">
order by #{orderCause}
</if>
</select>
这里orderCause是在代码里拼接的排序字段和分页条件
paramMap.put("orderCause", "sbsj desc offset "+(pageNo-1)*pageSize+" rows fetch next "+pageSize+" rows only");
解决方法:
很简单,把#换成$即可。