超爱学习网
mybatisPlus
一级目录
基础使用
常用注解
构造器类型
条件类型
curd接口
插件扩展
面试题
参考手册
版本
二级目录
Mapper操作接口
insert
delete
update
select
Service查询接口
list
listByIds
getById
getOne
count
page
Service插入接口
save
saveBatch
saveOrUpdate
Service更新接口
updateById
update
updateBatchById
Service删除接口
removeById
remove
removeByIds
Service其他接口
chain

「 getOne 」概念和作用

'getOne' 是 MyBatis-Plus service 层 CRUD 接口中的一个方法,用于根据给定的条件查询并返回单个实体对象。这个方法在只期望获取一个匹配结果的场景中非常有用,如根据唯一字段(例如用户名或邮箱)进行查询。

1. 基本用法

// 根据条件查询单个用户
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("email", "john.doe@example.com");
User user = userService.getOne(queryWrapper);

2. 使用lambda查询

// 使用lambda条件构造器查询
LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(User::getEmail, "john.doe@example.com");
User user = userService.getOne(lambdaQuery);

3. 查询不存在的记录

// 查询一个不存在的记录
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("email", "nonexistent@example.com");
User user = userService.getOne(queryWrapper);
if (user == null) {
    // 处理未找到记录的情况
}

4. 与业务逻辑结合

// 结合业务逻辑查询用户
String userEmail = getUserEmailFromContext();
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("email", userEmail);
User user = userService.getOne(queryWrapper);
// 业务逻辑处理

5. 查询并更新

// 查询用户并更新其状态
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("email", "update@example.com");
User user = userService.getOne(queryWrapper);
if (user != null) {
    user.setStatus("updated");
    userService.updateById(user);
}

6. 异常处理

// 查询时进行异常处理
try {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("email", "john.doe@example.com");
    User user = userService.getOne(queryWrapper);
} catch (Exception e) {
    // 异常处理逻辑
}

7. 使用自定义查询

// 使用自定义查询逻辑
User user = customQueryMethod("specific-criteria");
// 处理查询到的用户

8. 结合缓存使用

// 结合缓存机制查询用户
User cachedUser = checkUserInCache("userId");
if (cachedUser == null) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("id", "userId");
    User user = userService.getOne(queryWrapper);
    // 缓存用户信息
}

9. 条件判断后查询

// 根据条件判断后查询
if (isEligibleForQuery()) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("status", "active");
    User user = userService.getOne(queryWrapper);
    // 后续处理
}

10. 用于数据校验

// 用于数据校验
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("email", "validation@example.com");
User user = userService.getOne(queryWrapper);
if (user != null && isValidUser(user)) {
    // 校验逻辑
}