mybatisplus list查询
时间: 2023-08-27 12:19:41 浏览: 88
您好!对于 MyBatis Plus,您可以使用 LambdaQueryWrapper 类来构建查询条件,包括查询条件为 List 的情况。
以下是一个示例代码,展示如何使用 MyBatis Plus 进行查询条件为 List 的操作:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import java.util.List;
public class MyBatisPlusExample {
public List<User> getUsersByNames(List<String> names) {
if (CollectionUtils.isEmpty(names)) {
return null;
}
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(User::getName, names);
相关问题
mybatisplus list查询优化
### 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
```
mybatisplus list分页查询
MyBatis Plus provides a convenient way to perform pagination queries using the `Page` class. Here is an example of how to perform a list pagination query with MyBatis Plus:
```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUsersWithPagination(int pageNo, int pageSize) {
Page<User> page = new Page<>(pageNo, pageSize);
return userMapper.selectPage(page, null);
}
}
```
In this example, `User` is the entity class mapped to the database table, and `UserMapper` is the MyBatis Plus mapper interface for `User`. The `getUsersWithPagination` method takes the page number (`pageNo`) and page size (`pageSize`) as parameters.
By creating a new `Page` object and passing it to the `selectPage` method of the mapper, MyBatis Plus will handle the pagination query automatically. The result is returned as an `IPage` object, which contains the paginated data along with other useful information such as total records and current page number.
You can then use the `IPage` object to retrieve the paginated data and display it as needed.
阅读全文