新增用户服务实现类UsersServiceImpl,包含用户CRUD操作 新增角色服务实现类RolesServiceImpl,包含角色管理功能 新增验证工具类ValidateUtil,提供参数验证功能 更新所有实体类添加@Builder注解 更新所有Mapper接口添加selectInfo和updateInfo方法 更新application.properties添加server.port配置 修复OrdersServiceImpl中Logger使用问题 添加updateInfo方法使用文档
5.3 KiB
5.3 KiB
UsersMapper.updateInfo 方法使用模板
本文档提供了如何使用 UsersMapper 接口中的 updateInfo 方法的示例模板,该方法支持使用 UpdateWrapper 构建灵活的更新条件。
方法签名
/**
* 更新用户信息
* @param users 用户信息
* @param updateWrapper 更新条件包装器
* @return 是否成功
*/
int updateInfo(Users users, UpdateWrapper<Users> updateWrapper);
示例代码
以下是在 Service 层中使用该方法的完整示例:
package com.qf.backend.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.qf.backend.entity.Users;
import com.qf.backend.mapper.UsersMapper;
import com.qf.backend.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UsersMapper usersMapper;
/**
* 更新用户信息示例
* @param userId 用户ID
* @param newNickname 新昵称
* @param newEmail 新邮箱
* @return 是否更新成功
*/
public boolean updateUserInfo(Long userId, String newNickname, String newEmail) {
// 1. 创建用户对象,设置要更新的字段
Users users = new Users();
users.setNickname(newNickname); // 设置要更新的昵称
users.setEmail(newEmail); // 设置要更新的邮箱
// 2. 创建UpdateWrapper,构建更新条件
UpdateWrapper<Users> updateWrapper = new UpdateWrapper<>();
// 根据用户ID更新
updateWrapper.eq("id", userId);
// 可以添加额外的条件(如状态检查)
updateWrapper.eq("status", 1); // 仅当用户状态为1(正常)时更新
// 3. 调用updateInfo方法执行更新
int result = usersMapper.updateInfo(users, updateWrapper);
// 4. 返回更新结果(result > 0 表示更新成功)
return result > 0;
}
/**
* 根据用户名更新用户信息示例
* @param username 用户名
* @param newAvatar 新头像URL
* @return 是否更新成功
*/
public boolean updateUserAvatarByUsername(String username, String newAvatar) {
// 1. 创建用户对象,设置要更新的字段
Users users = new Users();
users.setAvatar(newAvatar); // 设置要更新的头像URL
// 2. 创建UpdateWrapper,构建更新条件
UpdateWrapper<Users> updateWrapper = new UpdateWrapper<>();
// 根据用户名更新
updateWrapper.eq("username", username);
// 3. 调用updateInfo方法执行更新
int result = usersMapper.updateInfo(users, updateWrapper);
// 4. 返回更新结果
return result > 0;
}
/**
* 复杂条件更新示例
* @param userIds 用户ID列表
* @param newPhone 新手机号
* @param newGender 新性别
* @return 更新的用户数量
*/
public int batchUpdateUserInfo(List<Long> userIds, String newPhone, Integer newGender) {
// 1. 创建用户对象,设置要更新的字段
Users users = new Users();
users.setPhone(newPhone); // 设置要更新的手机号
users.setGender(newGender); // 设置要更新的性别
// 2. 创建UpdateWrapper,构建复杂更新条件
UpdateWrapper<Users> updateWrapper = new UpdateWrapper<>();
// 使用in条件,更新多个用户
updateWrapper.in("id", userIds);
// 添加额外条件
updateWrapper.gt("create_time", "2023-01-01"); // 只更新2023年之后创建的用户
updateWrapper.isNotNull("email"); // 只更新有邮箱的用户
// 3. 调用updateInfo方法执行更新
return usersMapper.updateInfo(users, updateWrapper);
}
}
使用说明
-
创建Users对象:只需要设置你想要更新的字段,不需要设置所有字段。
-
构建UpdateWrapper:
eq(column, value):等于条件ne(column, value):不等于条件gt(column, value):大于条件ge(column, value):大于等于条件lt(column, value):小于条件le(column, value):小于等于条件in(column, values):IN条件,用于更新多条记录isNull(column)/isNotNull(column):NULL值判断- 可以链式调用多个条件
-
返回值处理:
- 返回值表示更新操作影响的行数
- 通常
result > 0表示更新成功 - 对于批量更新,可以直接使用返回值获取更新的记录数
-
注意事项:
- 确保Users对象中设置了需要更新的字段
- UpdateWrapper中的条件必须正确,避免更新到不应该更新的数据
- 对于敏感信息更新,建议在调用前进行权限校验
常见错误
- 忘记设置更新字段:确保在Users对象中设置了需要更新的字段值
- 条件过于宽松:避免使用没有限制条件的UpdateWrapper,这可能导致更新所有记录
- 字段名错误:确保UpdateWrapper中使用的列名与数据库表中的列名一致
通过使用UpdateWrapper,你可以灵活地构建各种更新条件,而不需要编写复杂的SQL语句,同时也提高了代码的可读性和可维护性。