首页 > 其他分享 >mybatis-plus 批量插入方法saveBatch 踩坑

mybatis-plus 批量插入方法saveBatch 踩坑

时间:2023-06-04 20:55:05浏览次数:35  
标签:IdType 插入 saveBatch id 插入方法 键值 mybatis INPUT 主键

1、问题描述由于我在数据库的一张表设置了两个主键,所以创建的实体我想都加上@TableId注解
但是这样在mybatis-plus中一个实体只能有一个@TableId注解标识的主键

2、然后我在批量插入时就遇到了问题,我使用的saveBatch方法进行的批量插入,在插入时实体的两个id我都设置值了,
但是唯独设置@TableId注解的id在插入时无法进行插入

# 就执行了下面的sql语句
INSERT INTO hu_article_tag (tag_id ) VALUES ( ? )

3、最后我发现了问题的所在,原因是我的主键id原本设置了自增,所以我在插入实体时无法插入设置的主键id的值

4、解决方法就是@TableId(type = IdType.INPUT) 在这个注解加入IdType.INPUT类型即可完美解决

IdType.INPUT:该枚举类型表示插入数据时需要手动输入主键值。换句话说,当使用该枚举类型时,插入操作并不会生成主键值,需要手动指定主键值才能进行插入操作。
IdType.AUTO:该枚举类型表示插入数据时主键值会自增长。当使用该枚举类型时,插入操作会自动生成主键值,无需手动指定主键值即可进行插入操作。
因此,根据实际需要选择不同的主键自增长策略即可。如果希望手动指定主键值,则可以选择IdType.INPUT;如果希望主键自增长,则可以选择IdType.AUTO。

时间:2023-06-04

标签:IdType,插入,saveBatch,id,插入方法,键值,mybatis,INPUT,主键
From: https://www.cnblogs.com/huxiaoan1/p/17456288.html

相关文章

  • 5. Mybatis获取参数值的两种方式
    ‍MyBatis获取参数值的两种方式:​${}和#{}​${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时......
  • 6. Mybatis的各种查询功能
    6.1、查询一个实体类对象‍/***根据用户id查询用户信息*@paramid*@return*/UsergetUserById(@Param("id")intid);<!--UsergetUserById(@Param("id")intid);--><selectid="getUserById"resultType="User">select*......
  • spring整合mybatisplus
    配置文件注解配置mapper扫描:@MapperScan("com.bjsxt.mybatisplus_lombok_swagger.mapper")pom<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--mybatisp......
  • springboot整合mybatis
    整合mybatis基础配置启动类添加@MapperScan配置文件#=================================数据库相关配置====================================spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://10.1.1.1:3306/db?useUnico......
  • 2. 搭建Mybatis
    确认开发环境​MySQL不同版本的注意事项1、驱动类driver-class-nameMySQL5版本使用jdbc5驱动,驱动类使用:com.mysql.jdbc.DriverMySQL8版本使用jdbc8驱动,驱动类使用:com.mysql.cj.jdbc.Driver2、连接地址urlMySQL5版本的url:jdbc:mysql://localhost:3306/ssmMySQL8版......
  • Spring和MyBatis整合
    框架整合时三层架构的分工  进行SSM框架整合时,两个框架的分工如下所示。MyBatis负责与数据库进行交互。Spring负责事务管理,Spring可以管理持久层的Mapper对象及业务层的Service对象。由于Mapper对象和Service对象都在Spring容器中,所以可以在业务逻辑层通过Service对象调用......
  • Spring整合mybatis使用xml配置事务
    自己准备开始教授Java相关的技术,Spring框架是必须让学生学习的框架之一。里面有一个事务的配置以前刚学习Spring框架的时候有接触过,不过已经过了很多年,很多东西都已经忘记。现在再来回忆一下如何使用Spring框架类配置事务。使用到的maven坐标如下:<dependencies>    <......
  • MyBatis之一对多抓取策略
    MyBatis之一对多抓取策略1.情况描述如果只需要使用一方中的数据,而不使用多方数据的情况下,在执行过程中不需要发送查询多方的sql语句,需要配置抓取策略为懒加载。2.适用情况适用于一对多的方式一,通过多条sql查询情况。3.抓取策略fetchType(映射文件collection集合映射标签内......
  • Spring 3.0.5+MyBatis3.0.4整合非完全例子
    基于注解的mybatis和spring整合:[url]http://huangmin001.iteye.com/blog/1185806[/url][color=red]这个文章说的很详细,很值得一看[/color].Maven+SpringMVC+Mybatis【绝非原创,单纯整理】【四】:[url]http://playgod1984.iteye.com/blog/984113[/ur......
  • 1. Mybatis 简介
    1.Mybatis历史MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftwareFoundation迁移到了GoogleCode。随着开发团队转投GoogleCode旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组......