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

詳解MyBatis直接執(zhí)行SQL查詢及數(shù)據(jù)批量插入

 更新時(shí)間:2016年01月23日 11:37:12   作者:izumi  
這篇文章主要介紹了MyBatis直接執(zhí)行SQL查詢及數(shù)據(jù)批量插入的相關(guān)知識(shí),需要的朋友一起學(xué)習(xí)吧

一、直接執(zhí)行SQL查詢:

1、mappers文件節(jié)選

<resultMap id="AcModelResultMap" type="com.izumi.InstanceModel">
<result column="instanceid" property="instanceID" jdbcType="VARCHAR" />
<result column="instancename" property="instanceName" jdbcType="VARCHAR" />
</resultMap>
<select id="getInstanceModel" resultType="com.izumi.InstanceModel">
${paramSQL} 
</select>

2、DAO類(lèi)節(jié)選

public interface SomeDAO{
List<InstanceModel> getInstanceModel(@Param("paramSQL")String sql);
} 

3、注意事項(xiàng)

3.1:傳入方法的參數(shù)sql必須遵循以下規(guī)范"select XXX as instanceid, XXX as instancename ....." ,否則MyBatis無(wú)法自動(dòng)將查詢結(jié)果變成Java對(duì)象。

3.2: mappers文件中的#{}語(yǔ)法與${}語(yǔ)法的區(qū)別:

默認(rèn)情況下, #{}語(yǔ)法會(huì)促使MyBatis生成PreparedStatement屬性并且使用PreparedStatement的參數(shù)(=?)來(lái)設(shè)置值。如果你想直接將未更改的字符串代入到sql中,可以使用${}。

也就是說(shuō),MyBatis看到 #{}會(huì)認(rèn)為你在給sql中的變量賦值,就像JDBC編程中給問(wèn)號(hào)賦值一樣(比如MyBatis會(huì)判斷它的類(lèi)型,并自動(dòng)在前后加單引號(hào))。而當(dāng)MyBatis看到${}的時(shí)候會(huì)直接將之替換成變量的值而不做任何處理。

所以在使用${}的時(shí)候,不需要像#{}一樣寫(xiě)"jdbcType=VARCHAR"之類(lèi)的屬性。

3.3:resultType和resultMap

按照1中的寫(xiě)法, < resultMap > 部分可以刪除不用了,因?yàn)樵诮酉聛?lái)的<select >中沒(méi)用使用定義的resultMap,而是使用了resultType。

所以我們可以看出,關(guān)于<select >返回值的定義有兩種寫(xiě)法,一種是定義一個(gè)resultMap然后引用這個(gè)resultMap,還有一種就是直接使用resultType指定一個(gè)類(lèi)的路徑。

二、批量插入數(shù)據(jù)

1、經(jīng)驗(yàn)告訴我們,使用insert into XXX values(XX)(XXX)(XXX),比使用insert into XXX values(XX),insert into XXX values(XXX),insert into XXX values(XXX)效率要高。

2、在MyBatis中的用法

2.1、mappers文件節(jié)選

<insert id="insertBatch" > insert into student ( <include refid="Base_Column_List" /> ) values <foreach collection="list" item="item" index="index" separator=","> (null,#{item.name},#{item.sex},#{item.address},#{item.telephone},#{item.tId}) </foreach>
</insert> 

2.2、DAO類(lèi)節(jié)選

public interface SomeDAO{
public void insertBatch(@Param("list")List<Student> students); 
}

詳解mybatis批量插入數(shù)據(jù)

首先看看批處理的mapper.xml文件

<insert id="insertbatch" parameterType="java.util.List">
<selectKey keyProperty="fetchTime" order="BEFORE"
resultType="java.lang.String">
SELECT CURRENT_TIMESTAMP()
</selectKey>
insert into kangaiduoyaodian ( depart1, depart2, product_name,
generic_name, img, product_specification, unit,
approval_certificate, manufacturer, marketPrice, vipPrice,
website, fetch_time, productdesc ) values
<foreach collection="list" item="item" index="index"
separator=",">
( #{item.depart1}, #{item.depart2}, #{item.productName},
#{item.genericName}, #{item.img},
#{item.productSpecification}, #{item.unit},
#{item.approvalCertificate}, #{item.manufacturer},
#{item.marketprice}, #{item.vipprice}, #{item.website},
#{fetchTime}, #{item.productdesc} )
</foreach>
</insert>

在批處理中,我發(fā)現(xiàn)有幾個(gè)需要注意的問(wèn)題

1、主鍵的自動(dòng)獲取,在insert中添加useGeneratedKeys=”true” keyProperty=”id”這兩個(gè)屬性無(wú)效,并且或中斷數(shù)據(jù)插入,如果id是數(shù)據(jù)庫(kù)自增的話,可以什么都不寫(xiě),在插入的語(yǔ)句中去除主鍵屬性,還有就是利用

<selectKey keyProperty="id" order="BEFORE"
resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>

注意 :<selectKey > 標(biāo)簽在insert下只能存在一個(gè);批處理的時(shí)候不適合使用<selectKey >,主鍵自增最好,或者指定
2,插入時(shí)間的獲取如上面所示,我用的是mysql,只要是mysql函數(shù)都可以拿來(lái)使用,插入時(shí)間和主鍵都是mysql函數(shù)中的一個(gè)。。。

相關(guān)文章

  • java把字符串轉(zhuǎn)化成公式計(jì)算的示例

    java把字符串轉(zhuǎn)化成公式計(jì)算的示例

    今天小編就為大家分享一篇java把字符串轉(zhuǎn)化成公式計(jì)算的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java基礎(chǔ)入門(mén)之JDK、JRE、JVM關(guān)系詳解及開(kāi)發(fā)流程

    Java基礎(chǔ)入門(mén)之JDK、JRE、JVM關(guān)系詳解及開(kāi)發(fā)流程

    Java開(kāi)發(fā)中的JDK、JRE和JVM是三個(gè)至關(guān)重要的概念,它們構(gòu)成了Java應(yīng)用程序的運(yùn)行基礎(chǔ),這篇文章主要介紹了Java基礎(chǔ)入門(mén)之JDK、JRE、JVM關(guān)系詳解及開(kāi)發(fā)流程的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • SpringBoot整合Ureport2報(bào)表及常見(jiàn)使用方法

    SpringBoot整合Ureport2報(bào)表及常見(jiàn)使用方法

    這篇文章主要介紹了SpringBoot整合Ureport2報(bào)表及常見(jiàn)使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java操作FTP實(shí)現(xiàn)上傳下載功能

    Java操作FTP實(shí)現(xiàn)上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了Java如何通過(guò)操作FTP實(shí)現(xiàn)上傳下載的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-11-11
  • JVM的類(lèi)加載過(guò)程詳細(xì)說(shuō)明

    JVM的類(lèi)加載過(guò)程詳細(xì)說(shuō)明

    近來(lái)讀了《深入理解JVM虛擬機(jī)》的部分內(nèi)容,對(duì)JVM也慢慢有個(gè)整體的認(rèn)識(shí),今天就來(lái)分享一下我對(duì)JVM類(lèi)加載過(guò)程的學(xué)習(xí)和理解,需要的朋友可以參考下
    2021-06-06
  • Maven項(xiàng)目打包成可執(zhí)行Jar文件步驟解析

    Maven項(xiàng)目打包成可執(zhí)行Jar文件步驟解析

    這篇文章主要介紹了Maven項(xiàng)目如何打包成可執(zhí)行Jar文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 老生常談java中的fail-fast機(jī)制

    老生常談java中的fail-fast機(jī)制

    下面小編就為大家?guī)?lái)一篇老生常談java中的fail-fast機(jī)制。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • JavaWeb使用mvc模式實(shí)現(xiàn)登錄功能

    JavaWeb使用mvc模式實(shí)現(xiàn)登錄功能

    本文主要介紹了JavaWeb使用mvc模式實(shí)現(xiàn)登錄功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 基于hibernate實(shí)現(xiàn)的分頁(yè)技術(shù)實(shí)例分析

    基于hibernate實(shí)現(xiàn)的分頁(yè)技術(shù)實(shí)例分析

    這篇文章主要介紹了基于hibernate實(shí)現(xiàn)的分頁(yè)技術(shù),結(jié)合實(shí)例形式分析了Hibernate分頁(yè)技術(shù)的原理,實(shí)現(xiàn)步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • SpringCache常用注解及key中參數(shù)值為null問(wèn)題解析

    SpringCache常用注解及key中參數(shù)值為null問(wèn)題解析

    這篇文章主要介紹了SpringCache常用注解及key中參數(shù)值為null的問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論

锡林郭勒盟| 峨眉山市| 昌乐县| 莫力| 武隆县| 沾化县| 白朗县| 昔阳县| 封丘县| 冷水江市| 教育| 静乐县| 盱眙县| 阜新市| 鄂托克前旗| 巴中市| 宜宾县| 梁河县| 呈贡县| 东乡县| 巴青县| 泌阳县| 长汀县| 云和县| 太仆寺旗| 藁城市| 库伦旗| 子长县| 安化县| 鹿泉市| 焦作市| 化隆| 奉节县| 乌拉特前旗| 天长市| 定西市| 龙里县| 南靖县| 蓝田县| 常熟市| 周口市|