MyBatis排序無效的坑_orderByXLimit
情景:將數據庫裏邊的“新聞資訊”信息按照特定字段的升序/降序進行分頁顯示。
前端發送數據:newType(新聞類型,包括公司動態、行業資訊等類型)、orderBy(指定按照哪一個字段進行排序)、orderType(指定按照哪一種排序順序進行排序,包括升序、降序)、start(開始查詢的 記錄位置)、pageSize(本次查詢的記錄條數)。
MyBatis語句:
<select id="newsList" parameterType="NewsQuery" resultType="QueryNews">
SELECT * FROM t_newdb
<where>
releasedate is not null
<include refid="query_list"/>
</where>
</select>
<sql id="query_list">
<if test="newType != null and newType != ‘‘">
and newType = #{newType}
</if>
<if test="orderBy != ‘‘ and orderBy != null">
order by #{orderBy}
</if>
<if test="orderType != ‘‘ and orderType != null">
${orderType}
</if>
<if test="start != null and pageSize != null">
limit #{start}, #{pageSize}
</if>
</sql>
問題:不論前端給orderType傳ASC還是DESC,所得到的結果都是按照ASC排序。。。
日誌打印語句:
傳DESC時 :Preparing: SELECT * FROM t_newdb where releasedate is not null and newType = ? order by ? DESC limit ?, ?
傳ASC時: Preparing: SELECT * FROM t_newdb where releasedate is not null and newType = ? order by ? ASC limit ?, ?
將對應語句復制到Navicat執行,結果輸出正確。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最後,我將orderBy直接寫死為數據庫中一個字段,排序方式成功起作用。。。。。
個人估計:難道order by 後面直接寫兩個變量就會使後面一個變量失效?
本人頁在網上找了相關帖子,然而並沒有找到確切的說法。。。。。
貼出問題,若有大佬路過,也請順手指點一二。
最後說句:博客園碼代碼真的很傷。。。
MyBatis排序無效的坑_orderByXLimit