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 后面直接寫兩個變量就會使后面一個變量失效?

本人頁在網上找了相關帖子,然而並沒有找到確切的說法。。。。。

貼出問題,若有大佬路過,也請順手指點一二。

最后說句:博客園碼代碼真的很傷。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM