最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis insert標(biāo)簽及常用屬性詳解

 更新時(shí)間:2023年10月08日 15:22:46   作者:小日子呀  
這篇文章主要介紹了MyBatis insert標(biāo)簽,insert 標(biāo)簽中沒有 resultType 屬性,只有查詢操作才需要對(duì)返回結(jié)果類型進(jìn)行相應(yīng)的指定,需要的朋友可以參考下
<insert id="addWebsite" parameterType="string">
    insert into website(name)
    values(#{name})
</insert>

在 WebsiteMapper 接口中定義一個(gè) add() 方法 

public int addWebsite(String name);

 參數(shù)為 Sting 類型的字符串;返回值為 int 類型,即執(zhí)行 SQL 后,插入記錄的行數(shù)。測(cè)試:

//插入 name 為編程幫1 的記錄
String name = "編程1";
int i = websiteMapper.addWebsite(name);
System.out.println("共插入了 " + i + " 條記錄");

insert 標(biāo)簽常用屬性

屬性名稱描述備注
id它和 Mapper 的命名空間組合起來使用,是唯一標(biāo)識(shí)符,供 MyBatis 調(diào)用如果命名空間+ id 不唯一,那么 MyBatis 拋出異常
parameterType傳入 SQL 語句的參數(shù)類型的全限定名或別名,它是一個(gè)可選屬性。支持基本數(shù)據(jù)類型和 JavaBean、Map 等復(fù)雜數(shù)據(jù)類型
keyProperty該屬性的作用是將插入操作的返回值賦給 PO 類的某個(gè)屬性,通常為主鍵對(duì)應(yīng)的屬性。如果是聯(lián)合主鍵,可以將多個(gè)值用逗號(hào)隔開。-
useGeneratedKe該屬性用來設(shè)置,是否使用 JDBC 提供的 getGenereatedKeys() 方法,獲取數(shù)據(jù)庫內(nèi)部產(chǎn)生的主鍵并賦值到 keyProperty 屬性設(shè)置的請(qǐng)求對(duì)象的屬性中,例如 MySQL、SQL Server 等自動(dòng)遞增的字段,其默認(rèn)值為 false。該屬性值設(shè)置為 true 后,會(huì)將數(shù)據(jù)庫生成的主鍵回填到請(qǐng)求對(duì)象中,以供其他業(yè)務(wù)使用。
flushCache該屬性用于設(shè)置執(zhí)行該操作后,是否會(huì)清空二級(jí)緩存和本地緩存,默認(rèn)值為 true。-
timeout該屬性用于設(shè)置執(zhí)行該操作的最大時(shí)限,如果超時(shí),就拋異常。-
databaseId取值范圍 oracle、mysql 等,表示數(shù)據(jù)庫廠家;元素內(nèi)部可通過 <if test="_databaseId = 'oracle'"> 來為特定數(shù)據(jù)庫指定不同的 sql 語句。MyBatis 可以根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的語句,這種多廠商的支持是基于映射語句中的 databaseId 屬性。 MyBatis 會(huì)加載不帶 databaseId 屬性和帶有匹配當(dāng)前數(shù)據(jù)庫 databaseId 屬性的所有語句。 如果同時(shí)找到帶有 databaseId 和不帶 databaseId 的相同語句,則后者會(huì)被舍棄。
keyColumn該屬性用于設(shè)置第幾列是主鍵,當(dāng)主鍵列不是表中的第 1 列時(shí),就需要設(shè)置該屬性。如果是聯(lián)合主鍵,可以將多個(gè)值用逗號(hào)隔開。-

注意:insert 標(biāo)簽中沒有 resultType 屬性,只有查詢操作才需要對(duì)返回結(jié)果類型進(jìn)行相應(yīng)的指定。

傳遞多個(gè)參數(shù)

在上面的示例中,我們?cè)诓迦胝Z句中只使用了一個(gè) String 類型的參數(shù),而在實(shí)際的開發(fā)過程中,我們的插入語句往往需要使用多個(gè)參數(shù),Mybatis 為我們提供以下 3 種方式,來實(shí)現(xiàn)給映射器傳遞多個(gè)參數(shù):

  • 使用 Map 傳遞參數(shù)
  • 使用注解傳遞參數(shù)
  • 使用 JavaBean 傳遞參數(shù)

使用 Map 傳遞參數(shù)

可以將參數(shù)封裝到一個(gè) Map 對(duì)象中,然后傳遞給 MyBatis 的映射器,示例如下

在 WebsiteMapper 接口中,定義一個(gè) addWebsiteByMap() 方法,并使用 Map 傳遞參數(shù) 

int addWebsiteByMap(Map<String, String> params);

 在 WebsiteMapper.xml 中,使用 insert 標(biāo)簽定義一條插入語句,并接收通過 Map 傳遞的參數(shù)

<!--接收 Map 參數(shù)-->
<insert id="addWebsiteByMap" parameterType="map">
    insert into Website (name, url) values (#{name}, #{url})
</insert>

使用注解傳遞參數(shù)

在 WebsiteMapper 接口中,定義一個(gè) addWebsiteByParam() 方法,并使用 @Param 注解傳遞參數(shù) 

int addWebsiteByParam(@Param("name") String name, @Param("url") String url);

 在 WebsiteMapper.xml 中使用 insert 標(biāo)簽定義一條插入語句,并接收通過 @Param 注解傳遞的參數(shù)

<!--接收 @Param 注解傳遞的參數(shù)-->
<insert id="addWebsiteByParam">
    insert into Website (name, url)  values (#{name}, #{url})
</insert>

 測(cè)試代碼

int i = websiteMapper.addWebsiteByParam("111", "222");
System.out.println("通過 @Param 注解成功向數(shù)據(jù)庫中添加了 " + i + " 條記錄");

使用 JavaBean 傳遞參數(shù)

在 WebsiteMapper 接口中,定義一個(gè)addWebsiteByJavaBean() 方法

int addWebsiteByJavaBean(Website website);

 在 WebsiteMapper.xml 中使用 insert 標(biāo)簽定義一條插入語句,并接收通過 JavaBean 傳遞的參數(shù)

<!--接收通過 JavaBean 傳遞的參數(shù)-->
<insert id="addWebsiteByJavaBean" parameterType="net.cc.www.po.Website">
    insert into Website (name, url) values (#{name}, #{url})
</insert>

區(qū)別

以上 3 種方式的區(qū)別如下:

  • 使用 Map 傳遞參數(shù)會(huì)導(dǎo)致業(yè)務(wù)可讀性的喪失,繼而導(dǎo)致后續(xù)擴(kuò)展和維護(hù)的困難,所以在實(shí)際應(yīng)用中我們應(yīng)該果斷廢棄該方式。
  • 使用 @Param 注解傳遞參數(shù)會(huì)受到參數(shù)個(gè)數(shù)的影響。當(dāng) n≤5 時(shí),它是最佳的傳參方式,因?yàn)樗又庇^;當(dāng) n>5 時(shí),多個(gè)參數(shù)將給調(diào)用帶來困難。
  • 當(dāng)參數(shù)個(gè)數(shù)大于 5 個(gè)時(shí),建議使用 JavaBean 方式。

主鍵(自動(dòng)遞增)回填

MySQL、SQL Server 等數(shù)據(jù)庫表可以采用自動(dòng)遞增的字段作為其主鍵,當(dāng)向這樣的數(shù)據(jù)庫表插入數(shù)據(jù)時(shí),即使不指定自增主鍵的值,數(shù)據(jù)庫也會(huì)根據(jù)自增規(guī)則自動(dòng)生成主鍵并插入到表中。一些特殊情況下,可能需要將這個(gè)剛剛生成的主鍵回填到請(qǐng)求對(duì)象(原本不包含主鍵信息的請(qǐng)求對(duì)象)中,供其他業(yè)務(wù)使用??梢酝ㄟ^在 insert 標(biāo)簽中添加  keyProperty 和 useGeneratedKeys 屬性,來實(shí)現(xiàn)該功能。

<insert id="addWebsite" parameterType="net.cc.po.Website" keyProperty="id" useGeneratedKeys="true">
    insert into Website (name,url) values(#{name},#{url})
</insert>

自定義主鍵

如果在實(shí)際項(xiàng)目中,若數(shù)據(jù)庫不支持主鍵自動(dòng)遞增(例如 Oracle),或者取消了主鍵自動(dòng)遞增的規(guī)則,我們可以使用 MyBatis 的 <selectKey> 標(biāo)簽自定義生成主鍵,具體配置代碼如下:

<insert id="insertWebsite" parameterType="net.cc.po.Website">
    <!-- 先使用selectKey標(biāo)簽定義主鍵,然后再定義SQL語句 -->
    <selectKey keyProperty="id" resultType="Integer" order="BEFORE">
        select if(max(id) is null,1,max(id)+1) as newId from Website
    </selectKey>
    insert into Website (id,name,url) values(#{id},#{name},#{url})
</insert>

 <selectKey> 標(biāo)簽中屬性說明如下:

  • keyProperty:用于指定主鍵值對(duì)應(yīng)的 PO 類的屬性。
  • order:該屬性取值可以為 BEFORE 或 AFTER。BEFORE 表示先執(zhí)行 <selectKey> 標(biāo)簽內(nèi)的語句,再執(zhí)行插入語句;AFTER 表示先執(zhí)行插入語句再執(zhí)行 <selectKey> 標(biāo)簽內(nèi)的語句

到此這篇關(guān)于MyBatis insert標(biāo)簽的文章就介紹到這了,更多相關(guān)MyBatis insert標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatisplus實(shí)現(xiàn)JSON處理器的示例代碼

    Mybatisplus實(shí)現(xiàn)JSON處理器的示例代碼

    Mybatisplusjson是基于Mybatisplus開發(fā)的一個(gè)json工具庫,本文主要介紹了Mybatisplus實(shí)現(xiàn)JSON處理器的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 使用Springboot搭建OAuth2.0 Server的方法示例

    使用Springboot搭建OAuth2.0 Server的方法示例

    這篇文章主要介紹了使用Springboot搭建OAuth2.0 Server的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 面試與實(shí)戰(zhàn)必備:掌握J(rèn)ava并發(fā)編程關(guān)鍵知識(shí)點(diǎn)(線程池/CAS/性能優(yōu)化)

    面試與實(shí)戰(zhàn)必備:掌握J(rèn)ava并發(fā)編程關(guān)鍵知識(shí)點(diǎn)(線程池/CAS/性能優(yōu)化)

    本文從工程視角系統(tǒng)梳理Java并發(fā)編程的關(guān)鍵知識(shí)點(diǎn),主要內(nèi)容包括:并發(fā)問題的本質(zhì)、Java內(nèi)存模型、volatile和synchronized、Lock與AQS、線程池、Future與CompletableFuture、CAS與原子類、并發(fā)容器、死鎖與線上排查、并發(fā)性能優(yōu)化思路等一些常用代碼片段
    2026-05-05
  • Spring Cloud Gateway層限流實(shí)現(xiàn)過程

    Spring Cloud Gateway層限流實(shí)現(xiàn)過程

    這篇文章主要介紹了Spring Cloud Gateway層限流實(shí)現(xiàn)過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java實(shí)現(xiàn)員工信息管理系統(tǒng)

    Java實(shí)現(xiàn)員工信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)員工信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MyBatis和Hibernate的使用及區(qū)別

    MyBatis和Hibernate的使用及區(qū)別

    Hibernate和MyBatis都是主流的ORM框架,各有特點(diǎn),Hibernate使用HQL,適合需求明確的大型項(xiàng)目;MyBatis需要手動(dòng)編寫SQL,適合需求多變的互聯(lián)網(wǎng)項(xiàng)目
    2026-01-01
  • Spring mvc Controller和RestFul原理解析

    Spring mvc Controller和RestFul原理解析

    這篇文章主要介紹了Spring mvc Controller和RestFul原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳解Java中常見語法糖的使用

    詳解Java中常見語法糖的使用

    語法糖(Syntactic Sugar),也稱糖衣語法,是由英國計(jì)算機(jī)學(xué)家 Peter.J.Landin 發(fā)明的一個(gè)術(shù)語,指在計(jì)算機(jī)語言中添加的某種語法,本文主要為大家分享了12個(gè)java中常見的語法糖,感興趣的小伙伴可以了解下
    2023-11-11
  • JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載

    JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載

    這篇文章主要介紹了JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java實(shí)現(xiàn)快速排序算法可視化的示例代碼

    Java實(shí)現(xiàn)快速排序算法可視化的示例代碼

    快速排序算法通過多次比較和交換來實(shí)現(xiàn)排序,是對(duì)冒泡排序算法的一種改進(jìn)。本文將用Java語言實(shí)現(xiàn)快速排序算法并進(jìn)行可視化,感興趣的可以了解一下
    2022-08-08

最新評(píng)論

双流县| 太白县| 昔阳县| 贵南县| 巴东县| 布拖县| 黄浦区| 田阳县| 和顺县| 澎湖县| 东山县| 天长市| 双流县| 肇源县| 静乐县| 滕州市| 枣阳市| 东乡族自治县| 黄梅县| 玉龙| 涪陵区| 玉溪市| 治县。| 廉江市| 花垣县| 竹山县| 军事| 台北市| 四平市| 贡山| 田阳县| 连南| 读书| 赣州市| 府谷县| 文安县| 刚察县| 冀州市| 建德市| 霍城县| 郑州市|