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

MyBatis插入Insert、InsertSelective的區(qū)別及使用心得

 更新時間:2021年12月03日 09:01:46   作者:啊~~噙!  
這篇文章主要介紹了MyBatis插入Insert、InsertSelective的區(qū)別及使用心得,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis插入Insert、InsertSelective的區(qū)別

逆向自動生成的mybatis對應配置Mapper文件里面,有兩個方法,分別為insert和insertSelective。這兩個方法均是插入對象的方法。為什么會有兩個插入方法呢?

這里說一下兩者的區(qū)別

首先我們看代碼如下:

insert方法

<insert id="insert" parameterType="demo.pojo.domain.HspMediaInf" >
    insert into MEDIA_INF (MED_SEQ, EMG_SEQ, MED_CLASS, 
      MED_NAME, MED_FILE, MED_EXTEND, 
      MED_TYPE, MED_DATE, MED_SIZE, 
      MED_DATA)
    values (#{medSeq,jdbcType=VARCHAR}, #{emgSeq,jdbcType=VARCHAR}, #{medClass,jdbcType=VARCHAR}, 
      #{medName,jdbcType=VARCHAR}, #{medFile,jdbcType=VARCHAR}, #{medExtend,jdbcType=VARCHAR}, 
      #{medType,jdbcType=VARCHAR}, #{medDate,jdbcType=TIMESTAMP}, #{medSize,jdbcType=DECIMAL}, 
      #{medData,jdbcType=BLOB})
  </insert>

insertSelective方法

<insert id="insertSelective" parameterType="activetech.zyyhospital.pojo.domain.HspMediaInf" >
    insert into HSP_MEDIA_INF
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="medSeq != null" >
        MED_SEQ,
      </if>
      <if test="emgSeq != null" >
        EMG_SEQ,
      </if>
      <if test="medClass != null" >
        MED_CLASS,
      </if>
      <if test="medName != null" >
        MED_NAME,
      </if>
      <if test="medFile != null" >
        MED_FILE,
      </if>
      <if test="medExtend != null" >
        MED_EXTEND,
      </if>
      <if test="medType != null" >
        MED_TYPE,
      </if>
      <if test="medDate != null" >
        MED_DATE,
      </if>
      <if test="medSize != null" >
        MED_SIZE,
      </if>
      <if test="medData != null" >
        MED_DATA,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="medSeq != null" >
        #{medSeq,jdbcType=VARCHAR},
      </if>
      <if test="emgSeq != null" >
        #{emgSeq,jdbcType=VARCHAR},
      </if>
      <if test="medClass != null" >
        #{medClass,jdbcType=VARCHAR},
      </if>
      <if test="medName != null" >
        #{medName,jdbcType=VARCHAR},
      </if>
      <if test="medFile != null" >
        #{medFile,jdbcType=VARCHAR},
      </if>
      <if test="medExtend != null" >
        #{medExtend,jdbcType=VARCHAR},
      </if>
      <if test="medType != null" >
        #{medType,jdbcType=VARCHAR},
      </if>
      <if test="medDate != null" >
        #{medDate,jdbcType=TIMESTAMP},
      </if>
      <if test="medSize != null" >
        #{medSize,jdbcType=DECIMAL},
      </if>
      <if test="medData != null" >
        #{medData,jdbcType=BLOB},
      </if>
    </trim>
  </insert>

從上面連段代碼我們會發(fā)現(xiàn)insertSelective對應的sql語句加入了NULL校驗,只會插入數(shù)據(jù)不為null的字段值。insert則會插入所有字段,會插入null。

筆者反思但是為什么會有這兩種方法呢

總結(jié):由于真實開發(fā)中,我們在修改功能的from表單,或者一個類的某些模塊編輯的from表單中不會將所有的數(shù)據(jù)都查詢出來放到from表單中然后再insert到數(shù)據(jù)庫,所以我們經(jīng)常在這些功能中使用insertSelective方法,此時只針對我們操作的屬性進行insert操作,而如果使用insert方法,將會把非表單內(nèi)的內(nèi)容置為null從而影響數(shù)據(jù)安全。

Mybatis選擇插入,選擇更新 Update insert Mapper示例

<update id="updateMethod" parameterType="com.zjl.domain">
    update table_name
    <set>
      <if test="id != null">
        id = #{id,jdbcType=BIGINT},
      </if>
      <if test="creater != null">
        creater = #{creater,jdbcType=VARCHAR},
      </if>
      <if test="modifiedDate != null">
        modified_date = #{modifiedDate,jdbcType=TIMESTAMP},
      </if>
    </set>
    where task_id = #{taskId,jdbcType=BIGINT}
  </update>
<insert id="insertSelective" parameterType="com.zjl.domain">
    insert into table_name
    <trim prefix="(" suffix=")" suffixOverrides=",">
    <if test="id != null">
    id,
    </if>
    <if test="createDate != null">
    create_date,
    </if>
    <if test="modifiedDate != null">
    modified_date,
    </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
    <if test="id != null">
    #{id,jdbcType=BIGINT},
    </if>
    <if test="createDate != null">
    #{createDate,jdbcType=TIMESTAMP},
    </if>
    <if test="modifiedDate != null">
    #{modifiedDate,jdbcType=TIMESTAMP},
    </if>
    </trim>
</insert>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java計時新姿勢StopWatch的使用方法詳解

    Java計時新姿勢StopWatch的使用方法詳解

    這篇文章主要給大家介紹了關于Java計時新姿勢StopWatch的相關資料,以及java 中使用StopWatch來計算時間差的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • Mybatis collection查詢集合屬性報錯的解決方案

    Mybatis collection查詢集合屬性報錯的解決方案

    這篇文章主要介紹了Mybatis collection查詢集合屬性報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java網(wǎng)絡編程UDP實現(xiàn)消息發(fā)送及聊天

    Java網(wǎng)絡編程UDP實現(xiàn)消息發(fā)送及聊天

    這篇文章主要為大家詳細介紹了Java網(wǎng)絡編程UDP實現(xiàn)消息發(fā)送及聊天,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring中HandlerMethod類源碼詳細解析

    Spring中HandlerMethod類源碼詳細解析

    這篇文章主要介紹了Spring中HandlerMethod類源碼詳細解析,HandlerMethod類用于封裝控制器方法信息,包含類信息、方法Method對象、參數(shù)、注解等信息,具體的接口請求是可以根據(jù)封裝的信息調(diào)用具體的方法來執(zhí)行業(yè)務邏輯,需要的朋友可以參考下
    2023-11-11
  • dubbo?filter中有關bean注入和配置文件讀取方式

    dubbo?filter中有關bean注入和配置文件讀取方式

    這篇文章主要介紹了dubbo?filter中有關bean注入和配置文件讀取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MyEclipse8.6首次運行maven項目圖標上沒有小M的標識怎么解決

    MyEclipse8.6首次運行maven項目圖標上沒有小M的標識怎么解決

    myeclipse8.6導入maven項目后識別為普通java項目,即項目圖標上沒有小M的標識。這時是無法直接運行的,怎么解決這一問題呢?下面小編給大家?guī)砹私鉀Q方案,需要的朋友參考下吧
    2016-11-11
  • springboot集成redis lettuce

    springboot集成redis lettuce

    目前java操作redis的客戶端有jedis跟Lettuce。本文主要介紹了springboot集成redis lettuce,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring Boot優(yōu)雅地處理404異常問題

    Spring Boot優(yōu)雅地處理404異常問題

    這篇文章主要介紹了Spring Boot優(yōu)雅地處理404異常問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Java實現(xiàn)Excel文件轉(zhuǎn)PDF(無水印無限制)

    Java實現(xiàn)Excel文件轉(zhuǎn)PDF(無水印無限制)

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)Excel文件轉(zhuǎn)PDF的效果,并可以無水印、無限制。文中的示例代碼講解詳細,需要的可以參考一下
    2022-06-06
  • Hibernate命名策略詳解

    Hibernate命名策略詳解

    本文主要介紹了Hibernate命名策略。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論

阜南县| 资阳市| 金川县| 凌海市| 丹凤县| 锦屏县| 河间市| 竹山县| 祥云县| 漾濞| 古田县| 宁陵县| 鹿泉市| 林周县| 十堰市| 泰兴市| 宁河县| 项城市| 麟游县| 曲阜市| 通道| 马公市| 蕉岭县| 龙海市| 天水市| 嘉定区| 南陵县| 新晃| 鄄城县| 呼和浩特市| 恩平市| 项城市| 伊吾县| 马边| 吴忠市| 鹰潭市| 亚东县| 宝清县| 蓬安县| 阿尔山市| 新安县|