`

mybatis批量添加数据与主键处理:

阅读更多
   mybatis批量添加数据处理:

主要在于xml文件中如何配置,调用与普通方法一样,参数是传入对象的集合就行了。

1.插入前数据已自己生成主键的情况:
<mapper namespace="com.gw.dao.TreasuryBondDao">
  <cache />
  <select id="getOneYearTreasuryBond" resultType="com.gw.model.TreasuryBondVO" parameterType="com.gw.model.TreasuryBondVO">
    select C4 from ST26099bond_main where C3&lt;=${C3} and C5=1 order by C3 desc limit 0,1 
  </select>

  <insert id="insertTreasuryBondBatch" parameterType="java.util.List"> 
       insert into ST26099bond_main(id,C2,C3,C4,C5) values 
        <foreach collection="list" item="item" index="index" 
            separator=", "> 
            (#{item.id},#{item.C2}, #{item.C3}, #{item.C4},#{item.C5})
        </foreach> 
    </insert>  
</mapper>

2.如果数据库表主键设成自增长,刚分成如下配置:
在insert中添加useGeneratedKeys=”true” keyProperty=”id”这两个属性无效,

2.1:  由数据库自动为主键生成值:
   将主键id,从插入字段中去掉便可。
<resultMap id="userBulletinResult" type="com.zlwh.member.model.UserBulletin">
        <result property="id" column="id"/>
        <result property="userId" column="user_id"/>
        <result property="bulletinId" column="bulletin_id"/>
        <result property="readTime" column="read_time"/>
</resultMap>

<insert id="insertBatch"  parameterType="java.util.List"> 
       INSERT INTO user_bulletin (user_id , bulletin_id ,read_time ) VALUES  
        <foreach collection="list" item="item" index="index" 
            separator=", "> (#{item.userId}, #{item.bulletinId},#{item.readTime})
        </foreach> 
    </insert> 

2.2:如果用自定义的主键生成方式去自动生成,则如下配置:
<insert id="insertBatch"  parameterType="java.util.List">
    <selectKey keyProperty="id" order="BEFORE" 
            resultType="java.lang.Integer"> 
            SELECT LAST_INSERT_ID() 
      </selectKey> 
INSERT INTO user_bulletin (id,user_id , bulletin_id ,read_time ) VALUES  
        <foreach collection="list" item="item" index="index" 
            separator=", "> (#{item.id},#{item.userId}, #{item.bulletinId},#{item.readTime})
        </foreach> 
    </insert> 
分享到:
评论
1 楼 liqiaomu410 2014-01-23  
2.2:如果用自定义的主键生成方式去自动生成,
楼主 : 我这边提示主键不能为空 在吗 帮忙解答下

<insert id="bathInsertMainPlan"  parameterType="java.util.List" >

<selectKey keyProperty="planId" order="BEFORE" 
            resultType="java.lang.Integer"> 
            SELECT LAST_INSERT_ID() 
        </selectKey>
<if test="list != null and list.size() > 0 ">
REPLACE INTO beyond_plan_t(
plan_id,
plan_name,
plan_description,
plan_start_date,
plan_end_date,
create_by
)VALUES
<foreach collection="list" item="planVO" index="index" open=""
close="" separator=",">
(
#{planVO.planId},
#{planVO.planName},
#{planVO.planDescription},
STR_TO_DATE( #{planVO.planEndDate},'%Y/%m/%d' ),
STR_TO_DATE( #{planVO.planStartDate},'%Y/%m/%d' ),
'-1'
)
</foreach>
</if>
</insert>

相关推荐

    Mybatis批量插入数据返回主键的实现

    Mybatis批量插入数据返回主键的实现 Mybatis是当前最流行的持久层框架之一,它提供了强大的批量插入功能,但是在批量插入数据时如何返回主键是一个常见的问题本文将详细介绍Mybatis批量插入数据返回主键的实现。 ...

    mybatis数据操作(增删改查+批量操作)

    在"mybatis数据操作(增删改查+批量操作)"这个主题中,我们将深入探讨如何利用MyBatis进行基本的数据操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select),以及如何执行批量操作。...

    mybatis-plus_batch_insert:mybatis_plus添加批量插入

    在处理大量数据时,批量插入(Batch Insert)是一种非常有效的方法,可以显著提高数据库操作的效率。本篇文章将详细介绍如何在 MyBatis-Plus 中实现批量插入。 ### 1. MyBatis-Plus 简介 MyBatis-Plus 是 MyBatis ...

    详解MyBatis批量插入数据Mapper配置文件的写法

    通过这种方式,你可以方便地在MyBatis中实现批量插入数据,提高数据库操作的效率。同时,由于SQL语句直接写在配置文件中,当表结构发生变化时,只需要修改配置文件,而不需要修改大量的业务代码,降低了维护成本。

    spring-boot-mybatis-interceptor:mybatis自定义主键插件,通过该插件生成分布式唯一雪花ID作为数据库表的主键

    主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。 UUID: 1、太长,并且有索引碎片,索引多占用空间的问题 2、无序。 雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序,该插件...

    Mybatis实现插入数据后返回主键过程解析

    -- 批量添加数据,并返回主键字段 --&gt; INSERT INTO user(name,age,create_time,update_time) VALUES ," item="u"&gt; (#{u.name},#{u.age},now(),now()) ``` ### 2.接口映射器 在接口映射器中,可以通过注解`@...

    MyBatis Plus全套学习资料(带源码和笔记)

    3. 主键自增:对于主键自增的表,MyBatis Plus可以自动处理主键生成。 4. 条件构造器:通过QueryWrapper或UpdateWrapper,可以方便地构建各种条件查询和更新语句。 5. 批量操作:支持批量插入、删除和更新,提高了...

    mybatis-plus源码(mybatis-plus-3.5.1.zip)

    4. **批量插入与更新**:MyBatis-Plus支持一次性插入或更新多条数据,提高了数据处理的效率。 5. **主键生成策略**:内置了多种主键生成策略,如ID_WORKER(分布式雪花算法)、SEQENCE(序列方式)等,可根据数据库...

    mybatis3.3x.rar

    这意味着在执行多条插入语句时,MyBatis可以一次性处理,并且能够返回所有新生成的主键值,这对于数据批量处理场景非常实用。 3.4.0版本的发布带来了更多优化和新功能,例如: - 支持Java 8的新特性,如日期时间...

    SpringBoot整合EasyExcel+MyBatis-Plus实现Excel批量导入和导出

    本文将详细介绍如何使用SpringBoot框架结合EasyExcel和MyBatis-Plus来实现Excel的批量导入和导出,从而提高数据处理效率。 首先,SpringBoot是一个轻量级的Java开发框架,它简化了Spring应用的初始搭建以及开发过程...

    mybatis plus 3.2.1破解版

    10. **字段策略**:支持忽略空值插入、非主键自增等字段策略,提高数据处理的灵活性。 在IDEA集成MyBatis Plus的过程中,首先需要在项目的pom.xml文件中添加MyBatis Plus的依赖,如下所示: ```xml &lt;groupId&gt;...

    Mybatis中使用updateBatch进行批量更新

    "Mybatis中使用updateBatch进行批量更新" Mybatis是一个基于Java的持久层框架,提供了批量更新的功能,以提高数据库操作的效率。在Mybatis中,可以使用updateBatch方法来进行批量更新,下面将详细介绍Mybatis中使用...

    mybatis_plus插件2.7版本破解

    1. **主键自增**:MyBatis Plus支持主键自动生成策略,对于MySQL等支持自增主键的数据库,它可以自动处理插入数据时的主键生成问题,无需手动设置。 2. **条件构造器**:提供了一个强大的查询构造器,允许开发人员...

    mybatis plus操作

    MyBatis Plus提供了与MyBatis一致的配置方式,可以在`mybatis-config.xml`中进行全局配置,也可以在Spring Boot的配置文件`application.yml`或`application.properties`中进行配置。比如,你可以设置数据库连接信息...

    phoenix-mybatis-demo:凤凰-mybatis集成的一些基本知识

    - **大数据处理**:当需要对HBase这样的NoSQL数据库进行复杂查询时,Phoenix与MyBatis的集成能提供更便捷的数据操作方式。 - **高并发场景**:在高并发的Web应用中,MyBatis的缓存机制和Phoenix的高性能查询可以...

    mybatis_plus_2.9.1

    2. **安装与配置**:在Java项目中使用MyBatis Plus,首先需要添加对应的依赖,如果是Maven项目,可以在pom.xml文件中引入MyBatis Plus的依赖。接着,配置实体类、Mapper接口以及Service层,使它们能够正常工作。 3....

    myBatis使用分享

    MyBatis是一个轻量级的框架,它允许开发人员将SQL查询、存储过程和高级映射与Java的POJOs(Plain Old Java Objects)相结合,极大地简化了数据库操作。 1. MyBatis概述: MyBatis消除了手动设置JDBC参数和处理结果...

    mybatis_plus

    7. **批量操作**:MP提供了便捷的批量插入、更新方法,可以一次性处理多条数据,提高了性能。 8. **SQL构建器**:提供SQL构建器,允许开发者以链式调用的方式构建复杂的SQL语句,既直观又易读。 9. **事务管理**:...

    mybatis-plus学习项目笔记

    MyBatis-Plus是基于MyBatis框架的增强工具,它在MyBatis的基础上做了很多自动化处理,减少了开发工作量,提升了开发效率。MyBatis-Plus主要包含实体类、Mapper接口、XML映射文件和配置文件四大部分。 2. **基本...

Global site tag (gtag.js) - Google Analytics