mybatisplus3.3.0中basemapper为啥没有批量插入啊
时间: 2023-10-05 12:05:24 浏览: 288
MyBatis-Plus 3.3.0 中的 BaseMapper 确实没有提供批量插入的方法。不过,你仍然可以使用 MyBatis 原生的批量插入方法。
具体地,可以使用 SqlSession 的 `insert(String statement, Object parameter)` 方法,其中 `statement` 为 SQL 语句的唯一标识符,`parameter` 为要插入的数据,可以是单个实体对象或者是实体对象的集合。
例如,如果你要批量插入一个实体对象的集合,可以按照以下步骤进行操作:
1. 在 MyBatis 的 XML 映射文件中编写插入语句,例如:
```xml
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO my_table (id, name, age) VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
</insert>
```
2. 在 Java 代码中获取 SqlSession 对象,并调用其 `insert` 方法,例如:
```java
List<MyEntity> entityList = ...; // 待插入的实体对象集合
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
int num = sqlSession.insert("com.example.MyMapper.insertBatch", entityList);
sqlSession.commit();
} finally {
sqlSession.close();
}
```
其中,`com.example.MyMapper` 为 XML 映射文件的命名空间,`insertBatch` 为插入语句的唯一标识符。`num` 表示插入的记录数。
需要注意的是,使用 MyBatis 原生的批量插入方法需要手动控制事务,即需要在插入操作完成后调用 `SqlSession` 的 `commit()` 方法提交事务,否则插入的数据不会生效。
阅读全文