类 MybatisBatchUtils
java.lang.Object
com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils
- 从以下版本开始:
- 3.5.4
- 作者:
- nieqiurong
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> batchMethod) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> batchMethod, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, ParameterConvert<T> parameterConvert) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, ParameterConvert<T> parameterConvert, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> batchMethod) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> batchMethod, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, ParameterConvert<T> parameterConvert) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, ParameterConvert<T> parameterConvert, int batchSize) 执行批量操作static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod, int batchSize) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod, int batchSize) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作
-
构造器详细资料
-
MybatisBatchUtils
public MybatisBatchUtils()
-
-
方法详细资料
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )batchSize- 插入批次数量- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, ParameterConvert<T> parameterConvert) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )parameterConvert- 参数转换器- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, String statement, ParameterConvert<T> parameterConvert, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )parameterConvert- 参数转换器batchSize- 插入批次数量- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )batchSize- 插入批次数量- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, ParameterConvert<T> parameterConvert) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )parameterConvert- 参数转换器- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, String statement, ParameterConvert<T> parameterConvert, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory-SqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)statement- 执行的 mapper 方法 (示例: com.baomidou.mybatisplus.core.mapper.BaseMapper.insert )parameterConvert- 参数转换器batchSize- 插入批次数量- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> batchMethod) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表batchMethod- 批量操作方法- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> batchMethod, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表batchMethod- 批量操作方法batchSize- 插入批次数量- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> batchMethod) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)batchMethod- 批量操作方法- 返回:
- 批处理结果
-
execute
public static <T> List<org.apache.ibatis.executor.BatchResult> execute(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> batchMethod, int batchSize) 执行批量操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)batchMethod- 批量操作方法batchSize- 插入批次数量- 返回:
- 批处理结果
-
saveOrUpdate
public static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表insertMethod- 插入方法insertPredicate- 插入条件 (当条件满足时执行插入方法,否则执行更新方法)updateMethod- 更新方法- 返回:
- 批处理结果
-
saveOrUpdate
public static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod, int batchSize) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表insertMethod- 插入方法insertPredicate- 插入条件 (当条件满足时执行插入方法,否则执行更新方法)updateMethod- 更新方法batchSize- 插入批次数量- 返回:
- 批处理结果
-
saveOrUpdate
public static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)insertMethod- 插入方法insertPredicate- 插入条件 (当条件满足时执行插入方法,否则执行更新方法)updateMethod- 更新方法- 返回:
- 批处理结果
-
saveOrUpdate
public static <T> List<org.apache.ibatis.executor.BatchResult> saveOrUpdate(org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory, Collection<T> dataList, boolean autoCommit, BatchMethod<T> insertMethod, BiPredicate<BatchSqlSession, T> insertPredicate, BatchMethod<T> updateMethod, int batchSize) 批量保存或更新 这里需要注意一下,如果在insertPredicate里判断调用其他sqlSession(类似mapper.xxx)时,要注意一级缓存问题或数据感知问题(因为当前会话数据还未提交) 举个例子(事务开启状态下): 如果当前批次里面执行两个主键相同的数据,当调用mapper.selectById时,如果数据库未有这条记录,在同个sqlSession下,由于一级缓存的问题,下次再查就还是null,导致插入主键冲突, 但使用BatchSqlSession时,由于每次select操作都会触发一次flushStatements,就会执行更新操作- 类型参数:
T- 泛型- 参数:
sqlSessionFactory- sqlSessionFactorySqlSessionFactorydataList- 数据集列表autoCommit- 是否自动提交(这里生效的前提依赖于事务管理器Transaction)insertMethod- 插入方法insertPredicate- 插入条件 (当条件满足时执行插入方法,否则执行更新方法)updateMethod- 更新方法batchSize- 插入批次数量- 返回:
- 批处理结果
-