类 MybatisBatchUtils

java.lang.Object
com.baomidou.mybatisplus.core.toolkit.MybatisBatchUtils

public class MybatisBatchUtils extends Object
从以下版本开始:
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,就会执行更新操作

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造器详细资料

    • 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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      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 - sqlSessionFactory SqlSessionFactory
      dataList - 数据集列表
      autoCommit - 是否自动提交(这里生效的前提依赖于事务管理器 Transaction)
      insertMethod - 插入方法
      insertPredicate - 插入条件 (当条件满足时执行插入方法,否则执行更新方法)
      updateMethod - 更新方法
      batchSize - 插入批次数量
      返回:
      批处理结果