91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis怎么實現數據庫的排序

發布時間:2022-03-22 17:41:04 來源:億速云 閱讀:896 作者:iii 欄目:開發技術

這篇文章主要介紹“mybatis怎么實現數據庫的排序”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mybatis怎么實現數據庫的排序”文章能幫助大家解決問題。

mybatis數據庫排序

今天用到了對數據庫按照倒序進行輸出。因為剛接觸mybatis,所以對這方面還不是太了解,再網上搜了好長時間終于找到了一些有用的信息。

我的目標是這樣的,數據庫中的信息分為無效和有效,對數據庫中的信息的有效值按照倒序進行輸出,輸出到表格中,

在網上看到了這樣的語句,SELECT * FROM photo ORDER BY id DESC;于是我就直接拿過來用了,但是卻出現了問題,因為我的是有條件排序的,

嘗試了幾次后我發現是這樣寫的, select 

<include refid="Base_Column_List" />
from manager_user where is_valid = 1

ORDER BY id DESC;這樣的話輸出的內容就達到了我的目標,將語句中的desc換成asc就可以進行升序排序

mybatis order by 排序

在使用MyBatis解析xml進行排序的時候,遇見排序無效的問題!

  • #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #{user_id},如果傳入的值是111,那么解析成sql時的值為order by “111”, 如果傳入的值是id,則解析成的sql為order by “id”。

  • $將傳入的數據直接顯示生成在sql中。如:order by ${user_id},如果傳入的值是111,那么解析成sql時的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id。

方式能夠很大程度防止sql注入

  • $方式無法防止Sql注入。

  • $方式一般用于傳入數據庫對象,例如傳入表名。

  • 一般能用#的就別用$。

order by 之后要使用$而非#

附解決代碼段:

其中orderByField就是傳入進行排序的參數值!

<choose>
  <when test="orderByField != null and orderByField !=''">
    <choose><when test="isAsc == true">
      order by ${orderByField} ASC
  </when>
  <otherwise>
    order by ${orderByField} DESC
  </otherwise></choose>
  </when>
<otherwise>
  order by id DESC

</otherwise></choose>

  ORDER BY
        <choose>
        <when test="sort!=null">
                #{sort,jdbcType=VARCHAR}
            <if test="order!=null">
                #{order,jdbcType=VARCHAR}
            </if>
        </when>
        <otherwise>
            id asc , create_time asc
        </otherwise>
     </choose>

原因是: #{order,jdbcType=VARCHAR},MyBatis會自動將排序字段當成一個字符串,等同于order by &lsquo;create_time&rsquo; &lsquo;desc&rsquo;,可以通過執行,但無效,與order by create_time desc結果不同

解決方法: 使用order,Mybatis會將其視作直接變量,變量替換成功后,不會再加上引號成為字符串,同樣排序順序也一樣

{order},因此

  ORDER BY
        <choose>
        <when test="sort!=null">
                ${sort}
            <if test="order!=null">
                ${order}
            </if>
        </when>
        <otherwise>
            id asc , create_time asc
        </otherwise>
     </choose>

#能很大程度的防止SQL注入 $無法防止Sql注入 $用于傳入數據庫對象 <![CDATA[]]>,在該符號內的語句,不會被當成字符串來處理,而是直接當成sql語句,比如要執行一個存儲過程。

在mapper文件中寫sql語句時,遇到特殊字符時,如:< > 等,建議使用

關于“mybatis怎么實現數據庫的排序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常山县| 龙里县| 亳州市| 化州市| 黎平县| 淮阳县| 南城县| 开鲁县| 大理市| 桂平市| 新宾| 增城市| 成都市| 开阳县| 安国市| 香格里拉县| 永城市| 鹤峰县| 屏山县| 东安县| 卢氏县| 平原县| 原阳县| 锡林浩特市| 南川市| 西乌| 当雄县| 精河县| 新和县| 巍山| 额敏县| 德保县| 衢州市| 满城县| 金平| 册亨县| 福州市| 策勒县| 开封市| 房产| 谢通门县|