中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

最新中國(guó)b2b網(wǎng)站排名南寧seo做法哪家好

最新中國(guó)b2b網(wǎng)站排名,南寧seo做法哪家好,wordpress 視差,網(wǎng)站仿做目錄 什么是MyBtais動(dòng)態(tài)語句??? MyBatis常用的動(dòng)態(tài)標(biāo)簽和表達(dá)式 if標(biāo)簽 Choose標(biāo)簽 where標(biāo)簽 MyBatis模糊查詢 #與$的區(qū)別 ?編輯 MyBatis映射 resultType resultMap 什么是MyBtais動(dòng)態(tài)語句???…

目錄

什么是MyBtais動(dòng)態(tài)語句???

MyBatis常用的動(dòng)態(tài)標(biāo)簽和表達(dá)式

if標(biāo)簽

Choose標(biāo)簽

where標(biāo)簽

MyBatis模糊查詢?

#與$的區(qū)別

?編輯

?MyBatis映射

resultType

resultMap


?

什么是MyBtais動(dòng)態(tài)語句???

MyBatis動(dòng)態(tài)語句是指在編寫SQL語句時(shí),使用MyBatis提供的動(dòng)態(tài)標(biāo)簽和表達(dá)式,根據(jù)不同的條件生成不同的SQL語句片段。通過使用動(dòng)態(tài)語句,我們可以根據(jù)不同的條件動(dòng)態(tài)地拼接SQL語句,使其更靈活和可復(fù)用。

MyBatis常用的動(dòng)態(tài)標(biāo)簽和表達(dá)式

if標(biāo)簽

? ?用于根據(jù)條件判斷是否包含某個(gè)SQL語句片段。當(dāng)條件成立時(shí),會(huì)將<if>標(biāo)簽內(nèi)部的SQL語句包含到最終生成的SQL語句中

示例代碼:

<select id="getUser" parameterType="int" resultType="User">SELECT * FROM user WHERE 1=1<if test="id != null">AND id = #{id}</if><if test="username != null">AND username = #{username}</if>
</select>


上面屬性解釋,具體定義一個(gè)查詢語句的標(biāo)簽,id屬性指定了查詢語句的唯一標(biāo)識(shí),parameterType屬性指定了輸入?yún)?shù)的類型,resultType屬性指定了返回結(jié)果的類型

<if test="id != null">:動(dòng)態(tài)語句的起始標(biāo)簽,用于判斷條件是否成立

AND id = #{id}: ? ? ? ? ? ?:SQL語句片段 將id!=null 成立sql條件包含到最終生成的SQL語句中

AND username = #{username}:SQL語句片段,當(dāng)條件username != null成立時(shí),將被包含到最終生成的SQL語句中

其中的 test屬性用于指定一個(gè)表達(dá)式,用來判斷條件是否成立。表達(dá)式可以是任意的合法表達(dá)式,通常使用參數(shù)的屬性進(jìn)行判斷。#{}是MyBatis中的占位符,可以獲取參數(shù)的值。

Choose標(biāo)簽

使用<choose>標(biāo)簽和<when>、<otherwise>標(biāo)簽來實(shí)現(xiàn)多條件選擇,根據(jù)條件選擇對(duì)應(yīng)的SQL語句片段

示例代碼:

<select id="getUser" parameterType="int" resultType="User">SELECT * FROM user WHERE 1=1<choose><when test="id != null">AND id = #{id}</when><when test="username != null">AND username = #{username}</when><otherwise>AND age > #{age}</otherwise></choose>
</select>


在上面的代碼<otherwise>標(biāo)簽用于指定條件都不成立時(shí)執(zhí)行的SQL語句片段。

where標(biāo)簽

使用<where>標(biāo)簽將條件拼接到WHERE子句中,如果條件不成立則不會(huì)生成WHERE關(guān)鍵字?

示例代碼:

<select id="getUser" parameterType="int" resultType="User">SELECT * FROM user<where><if test="id != null">AND id = #{id}</if><if test="username != null">AND username = #{username}</if></where>
</select>

Set標(biāo)簽

? 使用<set>標(biāo)簽將更新的字段拼接到SET子句中,如果條件不成立則不會(huì)生成SET關(guān)鍵字?

實(shí)例代碼:

<update id="updateUser" parameterType="User">UPDATE user<set><if test="username != null">username = #{username},</if><if test="password != null">password = #{password},</if></set>WHERE id = #{id}

MyBatis模糊查詢?

#與$的區(qū)別

? #(井號(hào))
? ? ? 用于預(yù)編譯階段,也稱為安全的參數(shù)替換。當(dāng)我們使用#來表示一個(gè)參數(shù)時(shí),MyBatis會(huì)自動(dòng)將傳入的參數(shù)進(jìn)行預(yù)編譯處理,并且會(huì)對(duì)參數(shù)進(jìn)行類型安全檢查,然后將其轉(zhuǎn)義后嵌入到SQL語句中。這樣可以防止SQL注入攻擊。因此,#通常在我們需要傳遞動(dòng)態(tài)參數(shù)時(shí)使用。在SQL語句中使用#表示參數(shù)的位置

例如:

SELECT * FROM user WHERE id = #{userId}


? ? $(美元符號(hào))
(美元符號(hào))則是直接拼接參數(shù)值。當(dāng)我們使用來表示一個(gè)參數(shù)時(shí),MyBatis會(huì)把參數(shù)原封不動(dòng)地拼接到SQL語句中,而不會(huì)進(jìn)行任何轉(zhuǎn)義或預(yù)編譯處理。這樣的參數(shù)替換是不安全的,容易受到SQL注入攻擊。因此,通常在我們確保參數(shù)安全或需要傳遞動(dòng)態(tài)的表名、列名等情況下使用。在SQL語句中使用表示參數(shù)的內(nèi)容

例如:

SELECT * FROM ${tableName}


注意:使用$進(jìn)行參數(shù)替換時(shí),我們需要自己確保參數(shù)的值正確并且安全,以避免潛在的安全風(fēng)險(xiǎn)。而使用#進(jìn)行參數(shù)替換時(shí),MyBatis會(huì)幫助我們處理參數(shù)的類型安全和轉(zhuǎn)義等問題,更加安全可靠。
?

代碼展示

為了更好的體現(xiàn)出#跟$的區(qū)別,我們配置三種方式來測(cè)試,#和$及concat

?在我們前面一篇的Mybatis講解中,生成增刪改查的類中配置剛所寫的xml中的模糊查詢方法

?

package com.xiaoxu.mapper;import com.xiaoxu.model.Book;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface  BookMapper {int deleteByPrimaryKey(Integer bid);int insert(Book record);int insertSelective(Book record);Book selectByPrimaryKey(Integer bid);int updateByPrimaryKeySelective(Book record);int updateByPrimaryKey(Book record);List<Book> selectByBids(@Param("bids") List bids);List<Book> like1(@Param("bname")String bname);List<Book> like2(@Param("bname")String bname);List<Book> like3(@Param("bname")String bname);

在前端和后端進(jìn)行相對(duì)應(yīng)的dao方法

定義一個(gè)接口并實(shí)現(xiàn)

接口方法:

 List<Book> like1(@Param("bname") String bname);List<Book> like2(@Param("bname") String bname);List<Book> like3(@Param("bname") String bname);

實(shí)現(xiàn)類

package com.xiaoxu.biz.impl;import com.xiaoxu.biz.BookBiz;
import com.xiaoxu.mapper.BookMapper;
import com.xiaoxu.model.Book;import java.util.List;/*** @author小徐* @site www.veryedu.cn* @company xu集團(tuán)* @create 2023-08-20 16:02*/
public class BookBizImpl implements BookBiz {private BookMapper bookMapper;public BookBizImpl() {}public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic int deleteByPrimaryKey(Integer bid) {return  bookMapper.deleteByPrimaryKey(bid);}@Overridepublic int insert(Book record) {return bookMapper.insert(record);}@Overridepublic int insertSelective(Book record) {return bookMapper.insertSelective(record);}@Overridepublic Book selectByPrimaryKey(Integer bid) {return bookMapper.selectByPrimaryKey(bid);}@Overridepublic int updateByPrimaryKeySelective(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}@Overridepublic int updatByPrimaryKey(Book record) {return bookMapper.updatByPrimaryKey(record);}@Overridepublic List<Book> selectByBids(List bids) {return bookMapper.selectByBids(bids);}@Overridepublic List<Book> like1(String bname) {return bookMapper.mhcx1(bname);}@Overridepublic List<Book> like2(String bname) {return bookMapper.mhcx2(bname);}@Overridepublic List<Book> like3(String bname) {return bookMapper.mhcx3(bname);}}

接下來測(cè)試#號(hào),記得調(diào)用#的方法

  @Testpublic void like1() {bookBiz.like1("%圣墟%").forEach(System.out::println);}

?運(yùn)行結(jié)果:

?

#{bname}會(huì)將傳入的bname值進(jìn)行預(yù)編譯轉(zhuǎn)義處理,然后再拼接到SQL語句中

測(cè)試$號(hào)

  @Testpublic void mhcx2() {bookBiz.mhcx2("%圣墟%").forEach(System.out::println);}

運(yùn)行會(huì)報(bào)錯(cuò)

?

?在測(cè)試一遍

?MyBatis映射

resultType

? 是在 SQL 映射文件中指定查詢結(jié)果的數(shù)據(jù)類型。它可以直接指定一個(gè)基本數(shù)據(jù)類型(如 String、Integer 等)或一個(gè)實(shí)體類的全限定名。當(dāng)查詢結(jié)果只包含單個(gè)簡(jiǎn)單數(shù)據(jù)類型時(shí),通常使用 resultType

例如:

<select id="getUserAge" resultType="Integer">SELECT age FROM user WHERE id = #{userId}
</select>

resultMap

?是用于處理復(fù)雜的查詢結(jié)果映射關(guān)系。它定義了數(shù)據(jù)庫列和 Java 對(duì)象屬性之間的映射規(guī)則。通過使用 resultMap,我們可以將查詢結(jié)果映射到一個(gè)復(fù)雜的對(duì)象結(jié)構(gòu)中,可以包含嵌套查詢結(jié)果、聯(lián)合查詢等復(fù)雜情況。通常,在查詢結(jié)果需要轉(zhuǎn)換成復(fù)雜對(duì)象或者集合時(shí)使用 resultMap

<resultMap id="userMap" type="User"><id column="id" property="id"/><result column="name" property="name"/><result column="age" property="age"/><!-- 其他屬性映射 -->
</resultMap><select id="getUsers" resultMap="userMap">SELECT * FROM user
</select>


其中 <resultMap> 標(biāo)簽定義了 User 類中各個(gè)屬性與數(shù)據(jù)庫表的列之間的映射規(guī)則,并設(shè)置了唯一標(biāo)識(shí)符 userMap。在 <select> 標(biāo)簽中使用 resultMap 屬性指定查詢結(jié)果的映射關(guān)系。

總結(jié)來說,resultType 適用于簡(jiǎn)單的查詢結(jié)果映射,而 resultMap 適用于復(fù)雜的查詢結(jié)果映射。根據(jù)實(shí)際情況選擇合適的方式可以提高 MyBatis 查詢結(jié)果的靈活性和可讀性。
?

http://www.risenshineclean.com/news/9572.html

相關(guān)文章:

  • 獨(dú)立網(wǎng)站怎么做seo當(dāng)陽seo外包
  • php 開源企業(yè)網(wǎng)站百度網(wǎng)盤網(wǎng)頁版入口
  • 懷化 網(wǎng)站建設(shè)2345網(wǎng)址導(dǎo)航設(shè)為主頁
  • 合肥萬戶網(wǎng)絡(luò)科技有限公司搜索引擎優(yōu)化的主要工作
  • 上虞網(wǎng)站設(shè)計(jì)城關(guān)網(wǎng)站seo
  • 沈陽做網(wǎng)站公司重慶seo排名
  • 國(guó)內(nèi)課程網(wǎng)站建設(shè)現(xiàn)狀永久免費(fèi)低代碼開發(fā)平臺(tái)
  • 新華社兩學(xué)一做網(wǎng)站seo整合營(yíng)銷
  • 編輯網(wǎng)站內(nèi)容有沒有批量辦法什么是seo關(guān)鍵詞
  • 網(wǎng)站程序和空間區(qū)別網(wǎng)絡(luò)推廣優(yōu)化網(wǎng)站
  • 寧波網(wǎng)站建設(shè)推廣公司青島百度快速排名優(yōu)化
  • 零食網(wǎng)站頁面模板湖南專業(yè)seo公司
  • 房產(chǎn)信息網(wǎng)站模板電商平臺(tái)怎么加入
  • 音樂網(wǎng)站開發(fā)參考文獻(xiàn)百度指數(shù)代表什么意思
  • 雞西公司做網(wǎng)站關(guān)鍵詞分為哪幾類
  • 哪有專做注冊(cè)小網(wǎng)站的客戶資源買賣平臺(tái)
  • wordpress懸浮bar深圳seo網(wǎng)站優(yōu)化公司
  • 企業(yè)網(wǎng)站怎么做推廣比較好網(wǎng)站模板建站公司
  • 二手車網(wǎng)站建站海豹直播nba
  • 做蛋糕有哪些網(wǎng)站域名查詢網(wǎng)
  • 網(wǎng)站360做的標(biāo)記如何取消市場(chǎng)營(yíng)銷策劃方案3000字
  • wordpress定時(shí)插件seo是什么意思seo是什么職位
  • 濰坊哪家網(wǎng)站制作公司好關(guān)鍵詞歌詞任然
  • 網(wǎng)站開發(fā)工程師自學(xué)個(gè)人開發(fā)app可以上架嗎
  • 營(yíng)口市代做網(wǎng)站三只松鼠口碑營(yíng)銷案例
  • 網(wǎng)站的標(biāo)簽怎么修改做國(guó)外網(wǎng)站
  • 射陽網(wǎng)站設(shè)計(jì)b站大全永不收費(fèi)2023入口在哪
  • 區(qū)塊鏈開發(fā)是什么意思常德網(wǎng)站優(yōu)化公司
  • 江西省城鄉(xiāng)建設(shè)培訓(xùn)網(wǎng)-官方網(wǎng)站關(guān)鍵詞優(yōu)化簡(jiǎn)易
  • 網(wǎng)站建設(shè)價(jià)格標(biāo)準(zhǔn)報(bào)價(jià)軟件開發(fā)交易平臺(tái)