mybatisplus list查询优化
时间: 2025-01-06 16:33:36 浏览: 7
### MyBatisPlus List 查询性能优化最佳实践
#### 使用分页插件提高查询效率
当面对大量数据时,一次性加载所有记录会消耗过多资源并降低响应速度。因此,在执行 `List` 查询之前应考虑采用分页方式来获取部分结果集。MyBatis-Plus 提供了内置的分页插件 PageHelper 或者 Page,能够有效减轻服务器压力[^1]。
```java
// 使用Page对象进行分页查询
IPage<User> page = new Page<>(currentPage, pageSize);
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
page = userMapper.selectPage(page, wrapper);
// 获取分页后的列表
List<User> userList = page.getRecords();
```
#### 减少不必要的字段返回
只选择真正需要使用的列而不是使用通配符(*)可以显著加快读取时间。这可以通过设置 SQL 片段中的 select 部分完成,或者更推荐的方式是在 Mapper 接口中定义特定的方法签名指定要检索哪些属性[^2]。
```xml
<!-- XML配置 -->
<select id="selectUserById" resultType="com.example.User">
SELECT id,name FROM users WHERE id=#{id}
</select>
```
```java
// LambdaQueryWrapper 方式
LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>lambdaQuery()
.select(User::getId, User::getName)
.eq(User::getAge, age);
```
#### 合理运用缓存机制
对于频繁访问的数据表或视图,启用二级缓存有助于减少重复计算带来的开销。需要注意的是,必须权衡好一致性与命中率之间的关系,并且确保所选方案适用于当前业务逻辑[^3]。
```yaml
mybatis-plus:
global-config:
cache-enabled: true # 开启全局二级缓存支持
```
#### 调整批量操作参数
针对大批量数据插入/更新场景下可能出现的问题,适当调整 JDBC 的 fetchSize 和 batchSize 参数可改善整体吞吐量表现。此外,关闭自动提交模式也有助于进一步提升事务处理速率[^4]。
```properties
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=30
```
阅读全文