相关疑难解决方法(0)

MyBatis批量插入/更新Oracle

我最近开始学习使用myBatis.我现在面临这样的情况,我需要不断通过WebService获取一个新的Objects列表,然后对于这个列表,我需要通过oracle DB表插入/更新每个对象MyBatis的.

棘手的部分是,我不能简单地每次都进行批量插入,因为某些对象可能已经存在于DB中,对于这些记录,我需要更新它们的字段而不是新的插入.

我当前的解决方案可能非常愚蠢,使用Java,从webservice构建Object列表,循环遍历每个,执行myBatis选择,如果它不是null(已经存在于db中),则执行myBatis更新; 否则,为这个新对象执行myBatis插入.

功能实现.但我的技术负责人表示它效率非常低,因为使用Java进行for循环并逐个插入/更新将消耗大量系统资源.他建议我通过传递一个对象列表来使用myBatis进行批量插入.

然而,myBatis中的批量插入很简单,因为我不是纯插入(对于我需要更新的现有记录),我不认为批量插入在这里是合适的.我已经google了一段时间,并意识到我可能需要使用"merge"而不是"insert"(对于Oracle).

我在myBatis中搜索合并的示例仅适用于一个对象,而不是批处理.因此,我想知道专家是否可以提供一些关于如何在MyBatis中进行批量合并的例子(编写Mapper的正确方法)?

java sql oracle mybatis

19
推荐指数
2
解决办法
6万
查看次数

如何使用MyBatis 3.x插入对象集合?

我是MyBatis的初学者.

我只想知道如何从类的实例插入一组对象.假设我有一个与一对多关系中的注释相关的类用户.我只想提一下,我通过Hibernate的hbm2ddl使用JPA 2注释构建了我的模式.我将在下面的示例代码中添加我使用的关键JPA注释.

这是一个示例:

@Entity
public class User {
    ...
    @OneToMany
    @JoinColumn(name="user")
    public List<Note> getNotes() {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,每次我在User表中插入一些内容时,如果列表不为空,我必须将实例插入到Note表中.记下Note表中的@JoinColumn,它应该具有已插入User的id,我已将其设置为自动生成.

有人有这样的工作吗?谢谢.

collections orm ibatis insert mybatis

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

mybatis ×2

collections ×1

ibatis ×1

insert ×1

java ×1

oracle ×1

orm ×1

sql ×1