当前位置: 首页 > 知识库问答 >
问题:

如何在Spring MVC中使用MyBatis/iBatis注释执行批量插入/更新操作

百里飞捷
2023-03-14

我第一次尝试执行批量插入/更新操作。我正在使用Mybatis注释(映射器)执行与数据库相关的操作。

我有一个@Param,它是列表

[{record_no=1, first_name="Alpha", last_name="Tester", age=23, gender="female"},
 {record_no=2, first_name="Beta", last_name="Tester", age=21, gender="male"}]

映射器将具有:

@Insert({"<script>", 
    "insert into  demo_record (first_name, last_name, age, gender, record_no) values ",
    "<foreach collection='recordList' item='record' index='index' open='(' separator = '),
     ( close=')' > <Here I do not know how to pass/ access Map's values.
                   Would it be just #{first_name} or something else?>
    </foreach>",
    "</script>"})
void doBatchInsert(@Param("recordList") List<Map<String, String>> recordList);

****我不确定open='('分隔符 = '), ( 关闭=')'到底是做什么的。如果有人能对它有所了解,我会非常感激。****

我在关注@Repository-

例如Controller类有:

@Autowired 
private RecordService recordservice;
.
.

recordservice.doBatchInsert(recordList);
.
.

return "success";

此外,有多少批量插入的记录以上的方法将能够处理?(记录可以范围从5000到50000)

附言:-这也是我第一次在这里发布问题。如果我没有正确发布问题,请对我宽容!非常感谢!!:)

共有1个答案

贺卜霸
2023-03-14

查看此常见问题解答,了解有关对批插入进行编码的建议:https://github.com/mybatis/mybatis-3/wiki/FAQ#how-do-i-code-a-batch-insert

您显示的不是批处理,而是一个巨大的insert语句。如果您真的有5000到50000条记录,那么您将很快达到JDBC准备语句所允许的参数限制。最好使用FAQ中描述的真正的JDBC批处理。

 类似资料:
  • 请让我知道,如何使用带注释的映射器在mybatis中执行批插入/更新。

  • 问题内容: 我们只想在MyBatis中使用注解;我们实际上是在尝试避免使用xml。我们正在尝试使用“ IN”子句: MyBatis似乎无法挑选出整数数组并将其放入结果查询中。似乎“轻声失败”,我们没有得到任何结果。 看起来我们可以使用XML映射来完成此操作,但我们确实希望避免这种情况。有正确的注释语法吗? 问题答案: 我相信这是jdbc准备的语句的细微差别,而不是MyBatis。有一个链接在这里解

  • 问题内容: 我不确定是否在批量索引编制中正确使用了该操作。 我的要求是: 网址是: 我想我错过了文档中的某些内容,但仍然找不到如何进行此操作的方法。 我想要 在索引中创建以上文档,或者如果存在则对其进行更新。 问题答案: 如果您通过批量API将索引中的记录添加为 那么如果该ID已经存在于索引中,您将获得一个异常。如果要添加或 替换 文档(取决于文档是否存在),则应按以下方式进行请求 如果已经存在具

  • 问题内容: 我正在尝试使用SQLAlchemy模块(而不是SQL!)在python中编写大量upsert。 我在SQLAlchemy添加上遇到以下错误: 我有一个称为列的主键的表。 在此示例中,我已经在数据库中使用了一行。当我尝试将新对象设置为时,出现上述错误。我的印象是,如果主键已经存在,记录将得到更新。 我如何仅基于主键就可以对Flask-SQLAlchemy进行增补? 有没有简单的解决方案?

  • 本文向大家介绍如何执行批量插入?相关面试题,主要包含被问及如何执行批量插入?时的应答技巧和注意事项,需要的朋友参考一下 首先,创建一个简单的 insert 语句:   然后在 java 代码中像下面这样执行批处理插入:

  • 问题内容: 我最近开始学习使用myBatis。现在面对这样的情况,我需要通过WebService不断获取新的对象列表,然后对于该列表,我需要通过以下方式将每个对象插入/更新到oracle DB表中: myBatis。 棘手的部分是,我不能每次都简单地进行批量插入,因为某些对象可能已经存在于数据库中,对于这些记录,我需要更新它们的字段而不是新插入。 我当前的解决方案可能非常愚蠢,使用Java,从We