MybatisPlus自定义insertBatchSomeColumn实现真正批量插入(Oracle)
在MyBatis Plus中,要实现真正的批量插入(即一条SQL语句插入多行数据),可以使用自定义的插入方法。以下是针对Oracle数据库的自定义批量插入某些列的实现示例:
首先,在对应的Mapper接口中定义自定义方法:
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface YourEntityMapper {
@Insert({
"<script>",
"INSERT INTO your_table (column1, column2) VALUES ",
"<foreach collection='list' item='item' index='index' separator=','>",
"(#{item.column1}, #{item.column2})",
"</foreach>",
"</script>"
})
int insertBatchSomeColumn(List<YourEntity> list);
}
在这个例子中,your_table
是要插入数据的表名,column1
和 column2
是要插入的列名。YourEntity
是对应的实体类,它包含了这些列对应的属性和方法。
然后,在服务层或者业务逻辑层调用这个自定义方法:
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class YourEntityService {
@Autowired
private YourEntityMapper yourEntityMapper;
public void batchInsert(List<YourEntity> entityList) {
yourEntityMapper.insertBatchSomeColumn(entityList);
}
}
在实际调用时,只需要准备好要插入的数据列表,并调用batchInsert
方法即可。
注意:Oracle数据库在批量操作时可能会遇到IN
子句中的列表长度过长的问题。如果预计插入的数据量很大,可能需要将批次分割成更小的块来避免这个问题。
评论已关闭