1.问题产生 之前,开发项目使用的是tk-mapper,当使用批量操作时,通常使用insertList就可以了。但是,最近的项目使用的是mybaits-plus,在使用批量操作saveBatch的使用,却遇到了一个问题,这个一开始让我以为我的数据出现了重复,但是仔细看,不是数据出现了重复,而是因为有一个字段相同,报唯一索引字段重复插入 Duplicate ent...
if (StringUtils.isNotBlank(name)) { query.like(Entity::getName, name)}if (age != null && age >= 0) { query.eq(Entity::getAge, age)} 就是如果没有传name参数, 其实是没有必要添加这个条件的. 满足一定条件才会把查询条件加上去. 写的多了, 就很麻烦, 而用MyBatis-Plus的构造器, 你...
作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了mybatis plus提供的saveBatch()方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等 5、6 秒,于是我就登录预发布环境查看执行日志,发现是mybatis plus提供的saveBatch()方法执行很慢导致,于是也就有了本篇文章。 mybatis...
clearLocalCache(); } 1. 2. 3. 4. 因此我们可以通过变更configuration.getLocalCacheScope()为STATEMENT进行清空。可以通过在yml做如下配置 mybatis-plus: configuration: local-cache-scope: statement 1. 2. 3. 方案二:变更localcache的key,使this.localCache.getObject(key)取到的值为null 我们先看下key的...
另外要切记每次处理完一批结果要记得释放存储每批数据的临时容器,即上文中的gxids.clear; 1、Spring Boot 项目统一结果,统一异常,统一日志,写的太好了! 2、Redis 官方可视化工具,功能真心强大! 3、去了一家不到 20 人的 IT 公司后,真的是大开眼界。。。
流式查询:内存会保持稳定,不会随着记录的增长而增长。其内存大小取决于批处理大小BATCH_SIZE的设置,该尺寸越大,内存会越大。所以BATCH_SIZE应该根据业务情况设置合适的大小。 另外要切记每次处理完一批结果要记得释放存储每批数据的临时容器,即上文中的gxids.clear();...
MyBatis Plus 大数据量查询优化 大数据量操作的场景大致如下: 数据迁移 数据导出 批量处理数据 在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时,如果一下子将数据全部加载出来到内存中,很可能会发生OOM(内存...
usersQueryWrapper.clear(); 可以清除之前 QueryWrapper的所有设置,变成一个刚生成的QueryWrapper。 6.你经常会写这样的代码: if(StringUtils.isNotBlank(name)){query.like(Entity::getName,name)}if(age!=null&&age>=0){query.eq(Entity::getAge,age)} ...
(6) clear 使用说明: 可以清除之前 QueryWrapper的所有设置,变成一个刚生成的QueryWrapper。 usersQueryWrapper.clear(); (7)可以优化的点: 按照我们的习惯,平时我们写代码是下面这样的: if(StringUtils.isNotBlank(name)){query.like(Entity::getName,name)}if(age!=null&&age>=0){query.eq(Entity::getAge,...
MybatisPlus提供了一系列基础操作的封装,例如插入、更新、删除、查询等。这些操作都是通过Mapper接口和实现类来完成的,开发者只需要继承BaseMapper接口即可。 1. 基础操作概念 MybatisPlus的基础操作封装了常见的增删改查操作,使得开发者可以更容易地使用MybatisPlus进行数据库操作。这些基础操作是通过Mapper接口和实现类来...