2.查看mybatis-plus封装代码 可以看到其批量操作的本质是一个for循环操作,注意参数里面出现了ignore: 代码语言:javascript 复制 /** * 批量插入 * * @param entityList ignore * @param batchSize ignore * @return ignore */@Transactional(rollbackFor=Exception.class)@OverridepublicbooleansaveBatch(Collection<T...
因为只需要改造insertBatchSomeColumn方法,那直接CV就好 insertBatchSomeColumn方法属于mybatis plus官方扩展包中 sql模板 publicclassInsertIgnoreBatchAllColumnextendsAbstractMethod{ /** * mapper 对应的方法名 */ privatestaticfinalStringMAPPER_METHOD="insertIgnoreBatc...
public boolean ignoreTable(String tableName) { List<String> ignoreTables = tenantProperty.getIgnoreTables(); if (ignoreTables.contains(tableName)){ return true; } return false; } // 不处理的非租户列的insert // @Override // public boolean ignoreInsert(List<Column> columns, String tenantIdColu...
insert ignorereplace intoinsert on duplicate key update 这里不展开介绍,大家可以自行查看: https://blog.csdn.net/weixin_42506706/article/details/113301248 四、通过SQL注入器实现真正的批量插入 通过SQL注入器sqlInjector 增加批量插入方法InsertBatchSomeColumn的过程如下: ...
* @return ignore */ @Transactional(rollbackFor = Exception.class) @Override public boolean saveBatch(Collection<T> entityList, int batchSize){ String sqlStatement = getSqlStatement(SqlMethod.INSERT_ONE); return executeBatch(entityList, batchSize, (sqlSession, entity) -> sqlSession.insert(sqlStatem...
除了可以指定IGNORE关键字以外,还可以加上 ON DUPLICATE KEY UPDATE 表示重复的话执行update语句 详见https://dev.mysql.com/doc/refman/8.0/en/insert.html 3. 批量插入的数据条数有没有限制 条数没有限制,但是发送给MySQL服务器的SQL语句大小有限制,默认是4M。因此,一次批量插多少条取决于每一条数据有多大。
* @return ignore */@Transactional(rollbackFor=Exception.class)@Overridepublic booleansaveBatch(Collection<T>entityList,int batchSize){String sqlStatement=getSqlStatement(SqlMethod.INSERT_ONE);returnexecuteBatch(entityList,batchSize,(sqlSession,entity)->sqlSession.insert(sqlStatement,entity));} ...
feat: 新增自增主键兼容配置开关 (mybatis-plus.global-config.db-config.insert-ignore-auto-increment-column 默认 false, 开启 INSERT 语句无视主键字段生成) feat: 新增参数填充器跳过方式 (基于 MappedStatement#id) feat: 新增 SQLite 的 DDL 自动维护功 ...
在mybatis-plus 3.4版本之前,mybatis-plus进行多租户插入时是不会对已经存在的tenant_id进行过滤的,这就导致出现Column 'tenant_id' specified twice问题。其3.4版本之前多租户sql解析器处理insert语句源码如下 代码语言:txt 复制 @Override public void processInsert(Insert insert) { ...