mybatis-plus ,批量保存直接用的是 mybatis-plus 提供的 saveBatch。于是开始排查之路。一、源码分析 ...
原本使用save时是没有问题了,改成saveOrUpdate用了一下就报错了。 com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: error: can not execute. because can not find column for id from entity! 就是这个mybatisPlus不能找到哪个是主键字段,因为这个saveOrUpdate默认是根据主键执行操作的! 所有需要...
从这点来看,这个 saveBach 的性能肯定比直接一条一条 insert 快。 拼接sql 的方式实现批量保存效率最佳。 但是我又不太甘心,总感觉应该有什么别的法子,然后我就继续跟着 mybatis-plus 的源码 debug 了一下,跟到了 mysql 的驱动,突然发现有个 if 里面的条件有点显眼。 如下图所示: 就是这个叫 rewriteBatched...
boolean saveBatch(Collection<T> entityList, int batchSize); // 批量插入数据注: entityList 表示实体对象集合 batchSize 表示一次批量插入的数据量,默认为 1000 【添加或修改数据:(增或改)】 boolean saveOrUpdate(T entity); // id 若存在,则修改, id 不存在则新增数据 default boolean saveOrUpdate(T ...
mybatis plus 使用默认的save方法 执行某个字段 使用mysql 函数 mybatis指定数据类型,一、返回一般数据类型比如要根据id属性获得数据库中的某个字段值。mapper接口://根据id获得数据库中的username字段的值StringgetEmpNameById(Integerid);SQL映射文件:<!--指定resul
e)继续调用MyBatis-Plus的saveBatch或save,都会走我们写的这个insert对应的xml f)测试后1w条大概在几百毫秒。 3、优化 (1)主键生成策略 IdType.AUTO:表示主键自增,适用于数据库支持的自增主键,如 MySQL 的 AUTO_INCREMENT。 IdType.ASSIGN_ID:使用雪花算法(Snowflake Algorithm)生成主键。
原本使用save时是没有问题了,改成saveOrUpdate用了一下就报错了。 com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: error: can not execute. because can not find column for id from entity! 就是这个mybatisPlus不能找到哪个是主键字段,因为这个saveOrUpdate默认是根据主键执行操作的!
问题:调用mybatisPlus的 Iservice中的save方法,后台日志打印出来Insert语句,但是没插入到数据库表中; 一共向两个表中插入数据;weather ,向天气表中插入数据成功,但是在异步任务中向 三方同步日志表中 third_request_log 是只打印出了成功Insert 语句和参数,但是实际未插入成功: ...
原本使用save时是没有问题了,改成saveOrUpdate用了一下就报错了。 com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: error: can not execute. because can not find column for id from entity! 就是这个mybatisPlus不能找到哪个是主键字段,因为这个saveOrUpdate默认是根据主键执行操作的!
mybatisPlus执行save方法获取自动填充的主键id 使用user1.getId(); 实测有效。