mysql批量insert数据上限(mysql存储过程实例详解)

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《mysql批量insert数据上限(mysql存储过程实例详解)》的相关信息,《mysql批量insert数据上限(mysql存储过程实例详解)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《mysql批量insert数据上限(mysql存储过程实例详解)》的详细说明。
笨笨网美国主机,w ww.2 b p .n e t

文章目录

  • 前言
    • 1.单条数据插入表:
      • 1.1mapper代码:
      • 1.2单元测试:
    • 2.多条数据插入表:
      • 2.1方法1:
      • 2.2方法2:
      • 2.3单元测试:
  • 结尾

前言

Mybatis批量插入返回自增ID这在很多场景下会用到,比方说请求过来以后返回结果后的回更用自增id处理,或者主表产生id后去做其他的子表的业务关联。

1.单条数据插入表:

1.1mapper代码:

重点是配置:
useGeneratedKeys=“true” keyProperty=“id”

<insert id="insertSelective" parameterType="com.gaosi.user.gaosiuserjack.modle.UserLocal" useGeneratedKeys="true" keyProperty="id" > insert into tb_user_local <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="name != null"> name, </if> <if test="age != null"> age, </if> <if test="createTime != null"> create_time, </if> <if test="updateTime != null"> update_time, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="name != null"> #{name,jdbcType=VARCHAR}, </if> <if test="age != null"> #{age,jdbcType=INTEGER}, </if> <if test="createTime != null"> #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTime != null"> #{updateTime,jdbcType=TIMESTAMP}, </if> </trim> </insert>

1.2单元测试:

@Test public void insert1(){ UserLocal userLocal=new UserLocal(); userLocal.setName("单个姓名"); int result=userLocalMapper.insertSelective(userLocal); System.out.println(userLocal); }

2.多条数据插入表:

2.1方法1:

<insert id="insertBatch2" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> insert into tb_user_local (name,create_time) <foreach collection="list" item="item" index="index" separator="union all"> SELECT #{item.name}, now() FROM DUAL </foreach> </insert>

2.2方法2:

<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> INSERT INTO tb_user_local (name,create_time) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.name},now()) </foreach> </insert>

2.3单元测试:

@Test public void insertBatch(){ List<UserLocal>list=new ArrayList<>(); for (int i=0;i<3;i++){ UserLocal userLocal=new UserLocal(); userLocal.setName(i+"姓名"); list.add(userLocal); } int result=userLocalMapper.insertBatch2(list); System.out.println(list); }

结尾

这其中需要注意的就是mybatis的版本必须是3.3x以上的版本,不能使用ON DUPLICATE KEY UPDATE等语法,如果使用的话,多条的数据只会返回第一条的数据自增id。这就是我使用mybatis批量插入后的总结,非常的实用,希望能帮助到大家。

笨笨网美国主机,w ww.2 b p .n e t
提醒:《mysql批量insert数据上限(mysql存储过程实例详解)》最后刷新时间 2025-03-21 11:17:27,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《mysql批量insert数据上限(mysql存储过程实例详解)》该内容的真实性请自行鉴别。