mybatis oracle 批量新增时无法设置主键
时间: 2023-08-13 09:08:25 浏览: 109
在 MyBatis 中进行批量新增时,如果你使用的是 Oracle 数据库,那么可能会遇到无法设置主键的问题。原因是 Oracle 数据库中的主键是自增长的,而 MyBatis 默认使用 JDBC 批量操作,无法获取到批量操作后的自增长主键。
解决方案是使用 Oracle 自带的批量插入语句,并在插入语句中使用序列来生成主键。具体步骤如下:
1. 在 Oracle 中创建序列,例如:
create sequence SEQ_USER_ID start with 1 increment by 1;
2. 在 MyBatis 的映射文件中编写插入语句,使用序列生成主键,例如:
<insert id="batchInsertUsers" parameterType="java.util.List">
insert into USER (ID, NAME, AGE) values (SEQ_USER_ID.nextval, #{name}, #{age})
</insert>
3. 在 Java 代码中调用插入方法时,使用 MyBatis 的 ExecutorType.BATCH 执行器类型,例如:
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.batchInsertUsers(users);
sqlSession.commit();
} finally {
sqlSession.close();
}
这样就可以在 Oracle 数据库中进行批量插入操作,并且能够正确地设置主键。
阅读全文