1. 程式人生 > >MyBatis排序無效的坑_orderByXLimit

MyBatis排序無效的坑_orderByXLimit

lease 順序 cat include 若有 res desc start 無效

情景:將數據庫裏邊的“新聞資訊”信息按照特定字段的升序/降序進行分頁顯示。

   前端發送數據: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