昨天在写mybatis xml时,查询出来数据想排序,发现一个问题:
<!-- 获取xxxxxxxx列表 --> <select id="xxxxxxxList" resultMap="xxxxxxxxxMap"> <![CDATA[select * from xxxxxx]]> <where> <if test="xxxxx !=null "> and xxxxx LIKE '%${xxxxxx}%' </if> </where> <if test="pageSize != null and start != null "> limit #{start},#{pageSize} </if> </select>
把'<![CDATA[ order by id ]]>' 放到‘<![CDATA[select * from xxxxxx]]>’之后或者limit语句之后,都会报错。
后来发现不是mybatis的限制,而是sql语法的限制。
经实测,发现order by语句要放到where之后(如果有where语句),放到limit之前(如果有limit语句)。