中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MyBatis模糊查詢的實現方式有哪些

發布時間:2023-05-05 10:00:47 來源:億速云 閱讀:89 作者:zzz 欄目:開發技術

本文小編為大家詳細介紹“MyBatis模糊查詢的實現方式有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MyBatis模糊查詢的實現方式有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、模糊查詢的幾種實現方式

1.concat函數和#{}拼接的方式

student_name like concat('%',#{studentName},'%')

2.%和${}拼接的方式

student_name like '%${studentName}%'

3.concat函數和${}拼接的方式

student_name like concat('%','${studentName}','%')

4.||和#{}拼接的方式

student_name like '%'||#{studentName}||'%'

分析: (1)${}:表示拼接sql串,將接收到參數的內容不加任何修飾拼接在sql中,可能引發sql注入。 (2)#{ }是預編譯處理,MyBatis在處理#{ }時,它會將sql中的#{ }替換為?,然后調用PreparedStatement的set方法來賦值,傳入字符串后,會在值兩邊加上單引號,使用占位符的方式提高效率,可以防止sql注入。因此最好使用#{ }方式。 (3)concat函數最好不要使用,最好使用||,因為在Oracle中,concat()只能對兩個字符串進行拼接(字符串多的話只能嵌套使用),而||可以對字符串無限拼接。

5.建議使用的方式

建議使用第四種哦,示例:

<if test="studentName != null and studentName !=''">
	and student_name like '%'||#{studentName}||'%'
</if>

二、用mybatis出現的一些問題

1.一般查詢條件的使用

在mapper文件里面關于查詢if的條件基本都要寫出兩種空值,否則就會在查詢時把其他不需要的數據也查出來。

錯誤示范:

<if test="studentName != null">
	and student_name = #{studentName}
</if>

正確示范:

<if test="studentName != null and studentName !=''">
	and student_name = #{studentName}
</if>

2.日期查詢條件的使用

這個是在寫日期查詢條件時,出現了日期只能修改,但不能為空的問題:

錯誤示范:

<if test="effDate != null and effDate !=''">
	and eff_date = #{effDate}
</if>
<if test="expDate != null and expDate !=''">
    and exp_date = #{expDate}
</if>

正確示范:去掉外面的if判空條件

and eff_date = #{effDate}
and exp_date = #{expDate}

3.排序問題

查詢時最好按id倒序,在修改之后不影響原有順序

比如:order by student_id desc

讀到這里,這篇“MyBatis模糊查詢的實現方式有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

平安县| 宿州市| 萨嘎县| 清水县| 灵川县| 彭泽县| 广宗县| 长武县| 东乡县| 山阳县| 阿拉善右旗| 囊谦县| 黑山县| 含山县| 远安县| 台江县| 庆阳市| 扶风县| 石河子市| 钦州市| 赫章县| 渭源县| 民勤县| 绥德县| 小金县| 福清市| 广宗县| 吴川市| 吉林市| 黄陵县| 珲春市| 花莲县| 保康县| 呈贡县| 容城县| 上杭县| 威信县| 大兴区| 全椒县| 南澳县| 兴义市|