欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

3、注意事項

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

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

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

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

所以在使用${}的時候,不需要像#{}一樣寫"jdbcType=VARCHAR"之類的屬性。

3.3:resultType和resultMap

按照1中的寫法, < resultMap > 部分可以刪除不用了,因為在接下來的<select >中沒用使用定義的resultMap,而是使用了resultType。

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

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

1、經(jīng)驗告訴我們,使用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類節(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)有幾個需要注意的問題

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

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

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

相關(guān)文章

  • Java開發(fā)深入分析講解二叉樹的遞歸和非遞歸遍歷方法

    Java開發(fā)深入分析講解二叉樹的遞歸和非遞歸遍歷方法

    樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構(gòu)都可用樹形象表示,本篇介紹二叉樹的遞歸與非遞歸遍歷的方法
    2022-05-05
  • springboot項目test文件夾下帶main方法的類不能運行問題

    springboot項目test文件夾下帶main方法的類不能運行問題

    這篇文章主要介紹了springboot項目test文件夾下帶main方法的類不能運行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • SpringBoot前后端分離項目之打包、部署到服務(wù)器詳細(xì)圖文流程

    SpringBoot前后端分離項目之打包、部署到服務(wù)器詳細(xì)圖文流程

    作為后臺開發(fā),項目打包部署是經(jīng)常性的操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端分離項目之打包、部署到服務(wù)器的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)Web應(yīng)用中的定時任務(wù)(實例講解)

    Java實現(xiàn)Web應(yīng)用中的定時任務(wù)(實例講解)

    下面小編就為大家分享一篇Java實現(xiàn)Web 應(yīng)用中的定時任務(wù)的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Spring中的@Repository注解源碼詳解

    Spring中的@Repository注解源碼詳解

    這篇文章主要介紹了Spring中的@Repository注解詳解,@Repository注解修飾哪個類,則表明這個類具有對對象進行增刪改查的功能,而且@Repository是@Component注解的一個派生品,所以被@Repository注解的類可以自動的被@ComponentScan通過路徑掃描給找到,需要的朋友可以參考下
    2023-10-10
  • Java最全文件操作實例匯總

    Java最全文件操作實例匯總

    這篇文章主要介紹了Java最全文件操作,總結(jié)分析了大量實例,詳細(xì)匯總了Java針對文件的各種常用操作,需要的朋友可以參考下
    2015-11-11
  • java?緩沖流的概念使用方法以及實例詳解

    java?緩沖流的概念使用方法以及實例詳解

    這篇文章主要為大家介紹了java?緩沖流的概念使用方法以及實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 通過Java實現(xiàn)在Word中創(chuàng)建可填充表單

    通過Java實現(xiàn)在Word中創(chuàng)建可填充表單

    這篇文章主要為大家詳細(xì)介紹了如何通過Java代碼,以編程方式在Word中創(chuàng)建可填充表單,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Java中Mybatis分頁查詢的四種傳參方式

    Java中Mybatis分頁查詢的四種傳參方式

    這篇文章主要介紹了Java中Mybatis分頁查詢的四種傳參方式:順序傳參,@param傳參,自定義POJO類傳參,Map傳參,想詳細(xì)了解傳參方式的小伙伴可以詳細(xì)閱讀本文,有一定的而參考價值
    2023-03-03
  • SpringBoot策略模式的實踐使用

    SpringBoot策略模式的實踐使用

    這篇文章主要介紹了SpringBoot 策略模式的實踐使用,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04

最新評論