国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除

這篇具有很好參考價值的文章主要介紹了Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人收藏使用

文章來自Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除 - chelsey3tsf - 博客園 (cnblogs.com)

1. 批量插入:

Mapper層:

int insertList(List<UsersModel> list);

對應的mapper.xml:

Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除

<!--批量插入信息-->
  <insert id="insertList" parameterType="java.util.List">
    insert into users(
    id, name
    )
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (
      #{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}
      )
    </foreach>
  </insert>

Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除

如果List數(shù)據(jù)量比較大,可以考慮將List分批次插入

2. 批量更新:

批量更新只提供更新單個字段的,因為更新多個字段無論哪種批量更新方案,我都用起來很不舒服,所以不做提供。

Mapper層:

int updateList(List<AgentApply> list);

對應的mapper.xml:

Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除

<!--批量更新-->
  <update id="updateList" parameterType="java.util.List">
    update agent_apply
    set apply_time=
    <foreach collection="list" item="item" index="index"
             separator=" " open="case" close="end">
      when id=#{item.id} then #{item.applyTime}
    </foreach>
    where id in
    <foreach collection="list" index="index" item="item"
             separator="," open="(" close=")">
      #{item.id,jdbcType=INTEGER}
    </foreach>
  </update>

Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除

3. 批量刪除:

PS:一般查詢出來的List都是包含對象在里面的,那么怎么清理出單獨包含ID的list呢?

可以參考下面方式,第一個listData是從數(shù)據(jù)庫查詢出來的list數(shù)據(jù),每個元素都是一個對象;

然后單獨把里面每個元素的id給取出來放入新的list(ids)。

List<AgentRechargeOrder> listData = agentRechargeOrderServiceImpl.getListByXXXX(XXXX);
List<Integer> ids = listData.stream().map(AgentRechargeOrder::getId).collect(Collectors.toList());

如果不想清除出單獨的id的list,直接傳整個List也是可以的, 這樣mapper層傳值就改成對應的包含對象的List即可。

Mapper層:

int deleteMany(List<Integer> ids);

對應的mapper.xml:

<delete id="deleteMany">
        delete  from agent_recharge_order where id in
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

最后補充個提醒:

因為批量操作會拼接成很長很長的mysql語句,所以mysql server在接收數(shù)據(jù)包的時候,對這個數(shù)據(jù)包的大小是有設置項限制的。

如果超過設置的值,就會報錯:

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large

那么就需要修改這個設置項,所以推薦提前先把對應的設置值稍微弄大一點文章來源地址http://www.zghlxwxcb.cn/news/detail-512852.html

到了這里,關于Mybatis 中傳入List實現(xiàn) 批量插入、批量更新、批量刪除的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 批量插入或更新數(shù)據(jù)(MyBatis-plus框架)

    批量插入或更新數(shù)據(jù)(MyBatis-plus框架)

    目錄 1.場景說明 2.DUPLICATE?和REPLACE比較 3.批量插入或者更新(兩種方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 問題:如果操作類集成了基礎類,比如封裝了BaseEntity去集成,那么這樣使用會出問題 方式二:on duplicate key (推薦) 4.注意 5.常見問題? 插入數(shù)據(jù)時,我們經(jīng)常會遇到這

    2024年02月04日
    瀏覽(23)
  • 【mybatis】mapper.xml中foreach的用法,含批量查詢、插入、修改、刪除方法的使用

    一、xml文件中foreach的主要屬性 foreach元素的屬性主要有 collection,item,index,separator,open,close。 collection: 表示集合,數(shù)據(jù)源 item :表示集合中的每一個元素 index :用于表示在迭代過程中,每次迭代到的位置 separator :表示在迭代時數(shù)據(jù)以什么符號作為分隔符 open :表示該語

    2024年02月12日
    瀏覽(23)
  • 使用saveOrUpdateBatch實現(xiàn)批量插入更新數(shù)據(jù)

    saveOrUpdateBatch 是 Hibernate 中的一個方法,可以用來批量插入或更新數(shù)據(jù)。這個方法的參數(shù)是一個 List,里面可以存儲多個實體對象。當 Hibernate 執(zhí)行這個方法時,會檢查每個實體對象是否存在主鍵,如果存在主鍵就執(zhí)行 update 操作,否則執(zhí)行 insert 操作。 使用 saveOrUpdateBatch 的代

    2024年02月11日
    瀏覽(26)
  • mybatis實現(xiàn)批量刪除

    mybatis實現(xiàn)批量刪除

    批量刪除主要需要注意接口處需要寫上@Param()加上你自己定義的collection集合名稱。實現(xiàn)批量刪除主要分為 三步驟 批量刪除是一個數(shù)組,因此傳入的參數(shù)是一個數(shù)組。但是之后使用的foreach標簽里面的需要id識別,因此需要自己給這個數(shù)組加上一個名稱。 主要就是foreach中的

    2024年02月16日
    瀏覽(12)
  • STL--list如何實現(xiàn)元素的插入和刪除

    STL--list如何實現(xiàn)元素的插入和刪除

    在C++標準模板庫(STL)中,std::list 是一個雙向鏈表。由于它的雙向鏈表特性,std::list 支持在任何位置高效地插入和刪除元素。 元素插入: ●使用 push_back() 在列表尾部添加元素; ●使用 push_front() 在列表頭部添加元素; ●使用 insert() 在指定位置插入元素。這需要一個迭代器

    2024年04月12日
    瀏覽(28)
  • Mybatis實現(xiàn)批量刪除(兩種常用方法)

    ????????將任意多個 id 拼接成 字符串 ,以 參數(shù) 形式傳遞進去,通過 in 函數(shù) ?的方式來刪除 ? ? ? ? ?①首先定義 接口類 ? ? ? ? ②在 實現(xiàn)類 中配置Mapper.xml ? ? ? ? ③ 測試類 ? ? ? ? ④ 結果 ??? ?????注意: ?#{}中 字符串類型 會使用單引號,${}?則無需。 這里

    2024年02月17日
    瀏覽(18)
  • Mysql 實現(xiàn)批量插入對已存在數(shù)據(jù)忽略或更新

    Mysql 實現(xiàn)批量插入對已存在數(shù)據(jù)忽略或更新

    對已存在的數(shù)據(jù)進行 忽略/更新 ,需要唯一索引/主鍵。 唯一索引可為多個字段的聯(lián)合索引,比如根據(jù)我提供的sql中,我需要``name + age`不重復,則可把這2個字段聯(lián)合創(chuàng)建為唯一索引 創(chuàng)建聯(lián)合唯一索引的sql 批量插入對已存在數(shù)據(jù)忽略 批量插入對已存在數(shù)據(jù)更新 筆者這里只舉

    2024年02月15日
    瀏覽(29)
  • Mybatis-Plus的SQL注入器實現(xiàn)批量插入/修改,效率比較

    Mybatis-Plus的SQL注入器實現(xiàn)批量插入/修改,效率比較

    mysql支持一條sql語句插入多條數(shù)據(jù)。但是Mybatis-Plus中默認提供的saveBatch、updateBatchById方法并不能算是真正的批量語句,而是遍歷實體集合執(zhí)行INSERT_ONE、UPDATE_BY_ID語句。 mybatis-plus雖然做了分批請求、一次提交的處理。但如果jdbc不啟用配置rewriteBatchedStatements,那么批量提交的s

    2024年02月11日
    瀏覽(25)
  • 【c++】:list模擬實現(xiàn)“任意位置插入刪除我最強?(???)?“

    【c++】:list模擬實現(xiàn)“任意位置插入刪除我最強?(???)?“

    ? ? 文章目錄 前言 一.list的基本功能的使用 二.list的模擬實現(xiàn) 總結 ? 1. list是可以在常數(shù)范圍內(nèi)在任意位置進行插入和刪除的序列式容器,并且該容器可以前后雙向迭代。 2. list的底層是雙向鏈表結構,雙向鏈表中每個元素存儲在互不相關的獨立節(jié)點中,在節(jié)點中通過指針指

    2024年01月17日
    瀏覽(17)
  • JAVA實現(xiàn)存在更新不存在插入與及多余的進行刪除(三)

    這個版本,主要是迭代重載了下save方法,不廢話,直接上代碼: 具體實現(xiàn)類對應的重載方法如下: 然后就是頭部加多了 implements ICudDataServiceT, ApplicationContextAware。 通過這個ApplicationContextAware獲取到所有bean服務,膚淺地以實體類拼湊一下服務名,找到bean服務就作為這個調(diào)用的

    2024年02月13日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包