1.普通saveBatch批量插入 我们循环1万次,把每个实例员工对象装到员工集合(List)中,然后调用Mybatis-Plus的saveBatch方法,传入List集合,实现批量员工的插入,然后我们在方法开始结束的地方,计算当前函数执行时长。 @PostMapping("/addBath") @ResponseBody public CommonResult<Employee> addBath(){ long startTime = ...
第二和第三步优化:涉及归类,汇总,此时会有很多循环求和,循环赋值等等操作,使用分片+多线程方式,最终汇总到一个List<Object>,也优化到了5s内(1w+数据量循环效率比不上jdk的stream流,可以用arthas的trace分析) 第四步瓶颈:前两步已经把响应时间卡在了4-5s内能完成,但是入库操作非常耗时,1w+的数据量插入数据库,花...
int batchSize){String sqlStatement=sqlStatement(SqlMethod.INSERT_ONE);int size=entityList.size();executeBatch(sqlSession->{int i=1;//遍历需要插入的数据列表,也即将数据想打包,然后执行批量操作for(Tentity:entityList){sqlSession.insert(sqlStatement,entity);if((i%batchSize==0)||i==size...
batchSqlSession.insert(SqlHelper.table(currentModelClass()).getSqlStatement(NoahSqlMethod.INSERT_BATCH.getMethod()), anEntityList); } else { MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>(); param.put(Constants.ENTITY, anEntityList); batchSqlSession.update(sqlStatement(SqlMethod.UP...
// 批量插入List<User> users =newArrayList<>();for(inti =0; i <5; i++) { User user =newUser(); user.setName("犬小哈"+ i); user.setAge(i); user.setGender(1); users.add(user); } boolean isSuccess = userService.saveBatch(users); ...
Mybatis Plus 伪批量插入 在前面《新增数据》小节中,我们已经知道了 Mybatis Plus 内部封装的批量插入savaBatch()是个假的批量插入,示例代码如下: List<User> users =newArrayList<>();for(inti =0; i <5; i++) { User user =newUser(); user.setName("犬小哈"+ i); ...
可是我之前已经添加了,而且数据表目前是没有建立索引的,即使是在1000来w的数据量下进行1500条的批量插入也不可能消耗20来秒吧,于是矛盾转移到saveBatch方法,使用版本:V3.4.3.4 查看源码: 代码语言:javascript 复制 publicbooleansaveBatch(Collection<T>entityList,int batchSize){String sqlStatement=this.getSqlStat...
测试插入测试更新、观察时间即可 5.查询 与查询基本一致;根据id查询用户信息;根据多个id查询多个用户信息;通过map条件查询用户信息;查询所有数据;@Testvoid test01(){ List<User> users = userMapper.selectList(null); for (User user : users) { System.out.println(user); }} 通过观察BaseMa...
插入操作时自动获取数据库生成的主键值并回填到实体对象中 5. 简化配置 减少XML 映射文件的使用 简化MyBatis 的配置 6. 支持自定义方法 在自定义 Mapper 接口中添加额外方法 编写SQL 语句支持自定义方法 7. 灵活的查询 使用Wrapper(条件构造器)进行灵活查询 包括selectList 和 selectOne 等方法 事务支持 BaseMapper ...
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 ...