亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis如何實(shí)現(xiàn)的數(shù)據(jù)庫(kù)排序

 更新時(shí)間:2022年03月22日 15:37:49   作者:黃小魚(yú)ZZZ  
這篇文章主要介紹了mybatis如何實(shí)現(xiàn)的數(shù)據(jù)庫(kù)排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis數(shù)據(jù)庫(kù)排序

今天用到了對(duì)數(shù)據(jù)庫(kù)按照倒序進(jìn)行輸出。因?yàn)閯偨佑|mybatis,所以對(duì)這方面還不是太了解,再網(wǎng)上搜了好長(zhǎng)時(shí)間終于找到了一些有用的信息。

我的目標(biāo)是這樣的,數(shù)據(jù)庫(kù)中的信息分為無(wú)效和有效,對(duì)數(shù)據(jù)庫(kù)中的信息的有效值按照倒序進(jìn)行輸出,輸出到表格中,

在網(wǎng)上看到了這樣的語(yǔ)句,SELECT * FROM photo ORDER BY id DESC;于是我就直接拿過(guò)來(lái)用了,但是卻出現(xiàn)了問(wèn)題,因?yàn)槲业氖怯袟l件排序的,

嘗試了幾次后我發(fā)現(xiàn)是這樣寫(xiě)的, select 

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

ORDER BY id DESC;這樣的話輸出的內(nèi)容就達(dá)到了我的目標(biāo),將語(yǔ)句中的desc換成asc就可以進(jìn)行升序排序

mybatis order by 排序

在使用MyBatis解析xml進(jìn)行排序的時(shí)候,遇見(jiàn)排序無(wú)效的問(wèn)題!

  • #將傳入的數(shù)據(jù)都當(dāng)成一個(gè)字符串,會(huì)對(duì)自動(dòng)傳入的數(shù)據(jù)加一個(gè)雙引號(hào)。如:order by #{user_id},如果傳入的值是111,那么解析成sql時(shí)的值為order by “111”, 如果傳入的值是id,則解析成的sql為order by “id”。
  • $將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by ${user_id},如果傳入的值是111,那么解析成sql時(shí)的值為order by 111, 如果傳入的值是id,則解析成的sql為order by id。

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

  • $方式無(wú)法防止Sql注入。
  • $方式一般用于傳入數(shù)據(jù)庫(kù)對(duì)象,例如傳入表名。
  • 一般能用#的就別用$。

order by 之后要使用$而非#

附解決代碼段:

其中orderByField就是傳入進(jìn)行排序的參數(shù)值!

<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會(huì)自動(dòng)將排序字段當(dāng)成一個(gè)字符串,等同于order by ‘create_time’ ‘desc’,可以通過(guò)執(zhí)行,但無(wú)效,與order by create_time desc結(jié)果不同

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

{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注入 $無(wú)法防止Sql注入 $用于傳入數(shù)據(jù)庫(kù)對(duì)象 <![CDATA[]]>,在該符號(hào)內(nèi)的語(yǔ)句,不會(huì)被當(dāng)成字符串來(lái)處理,而是直接當(dāng)成sql語(yǔ)句,比如要執(zhí)行一個(gè)存儲(chǔ)過(guò)程。

在mapper文件中寫(xiě)sql語(yǔ)句時(shí),遇到特殊字符時(shí),如:< > 等,建議使用

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中RabbitMQ的幾種消息確認(rèn)機(jī)制

    Java中RabbitMQ的幾種消息確認(rèn)機(jī)制

    RabbitMQ消息確認(rèn)機(jī)制指的是在消息傳遞過(guò)程中,發(fā)送方發(fā)送消息后,接收方需要對(duì)消息進(jìn)行確認(rèn),以確保消息被正確地接收和處理,本文主要介紹了Java中RabbitMQ的幾種消息確認(rèn)機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式

    使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式

    這篇文章主要介紹了依靠JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java編譯錯(cuò)誤問(wèn)題:需要class,interface或enum

    Java編譯錯(cuò)誤問(wèn)題:需要class,interface或enum

    這篇文章主要介紹了Java編譯錯(cuò)誤問(wèn)題:需要class,interface或enum,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 如何測(cè)試Spring MVC應(yīng)用

    如何測(cè)試Spring MVC應(yīng)用

    這篇文章主要介紹了如何測(cè)試Spring MVC應(yīng)用,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-10-10
  • 在SpringBoot中配置日期格式化的方法詳解

    在SpringBoot中配置日期格式化的方法詳解

    通常情況下,發(fā)起一個(gè) Http 請(qǐng)求,Spring Boot 會(huì)根據(jù)請(qǐng)求路徑映射到指定 Controller 上的某個(gè)方法的參數(shù)上,接著,Spring 會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,對(duì)于日期類(lèi)型的參數(shù),Spring 默認(rèn)是沒(méi)有配置如何將字符串轉(zhuǎn)換成日期類(lèi)型的,本文將給大家介紹在SpringBoot中配置日期格式化的方法
    2023-10-10
  • SpringBoot實(shí)現(xiàn)ImportBeanDefinitionRegistrar動(dòng)態(tài)注入

    SpringBoot實(shí)現(xiàn)ImportBeanDefinitionRegistrar動(dòng)態(tài)注入

    在閱讀Spring Boot源碼時(shí),看到Spring Boot中大量使用ImportBeanDefinitionRegistrar來(lái)實(shí)現(xiàn)Bean的動(dòng)態(tài)注入,它是Spring中一個(gè)強(qiáng)大的擴(kuò)展接口,本文就來(lái)詳細(xì)的介紹一下如何使用,感興趣的可以了解一下
    2024-02-02
  • java查詢mongodb中的objectid示例

    java查詢mongodb中的objectid示例

    這篇文章主要介紹了java查詢mongodb中的objectid示例,需要的朋友可以參考下
    2014-04-04
  • JVM虛擬機(jī)的類(lèi)加載機(jī)制詳解

    JVM虛擬機(jī)的類(lèi)加載機(jī)制詳解

    這篇文章主要介紹了JVM虛擬機(jī)的類(lèi)加載機(jī)制詳解,類(lèi)是在運(yùn)行期間第一次使用時(shí)動(dòng)態(tài)加載的,而不是一次性加載所有類(lèi),因?yàn)槿绻淮涡约虞d,那么會(huì)占用很多的內(nèi)存,需要的朋友可以參考下
    2023-12-12
  • 解決json串和實(shí)體類(lèi)字段不一致的問(wèn)題

    解決json串和實(shí)體類(lèi)字段不一致的問(wèn)題

    這篇文章主要介紹了解決json串和實(shí)體類(lèi)字段不一致的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 如何解決通過(guò)spring-boot-maven-plugin package失敗問(wèn)題

    如何解決通過(guò)spring-boot-maven-plugin package失敗問(wèn)題

    這篇文章主要介紹了如何解決通過(guò)spring-boot-maven-plugin package失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論