新增用户服务实现类UsersServiceImpl,包含用户CRUD操作 新增角色服务实现类RolesServiceImpl,包含角色管理功能 新增验证工具类ValidateUtil,提供参数验证功能 更新所有实体类添加@Builder注解 更新所有Mapper接口添加selectInfo和updateInfo方法 更新application.properties添加server.port配置 修复OrdersServiceImpl中Logger使用问题 添加updateInfo方法使用文档
145 lines
5.3 KiB
Markdown
145 lines
5.3 KiB
Markdown
# UsersMapper.updateInfo 方法使用模板
|
||
|
||
本文档提供了如何使用 `UsersMapper` 接口中的 `updateInfo` 方法的示例模板,该方法支持使用 `UpdateWrapper` 构建灵活的更新条件。
|
||
|
||
## 方法签名
|
||
|
||
```java
|
||
/**
|
||
* 更新用户信息
|
||
* @param users 用户信息
|
||
* @param updateWrapper 更新条件包装器
|
||
* @return 是否成功
|
||
*/
|
||
int updateInfo(Users users, UpdateWrapper<Users> updateWrapper);
|
||
```
|
||
|
||
## 示例代码
|
||
|
||
以下是在 Service 层中使用该方法的完整示例:
|
||
|
||
```java
|
||
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);
|
||
}
|
||
}
|
||
```
|
||
|
||
## 使用说明
|
||
|
||
1. **创建Users对象**:只需要设置你想要更新的字段,不需要设置所有字段。
|
||
|
||
2. **构建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值判断
|
||
- 可以链式调用多个条件
|
||
|
||
3. **返回值处理**:
|
||
- 返回值表示更新操作影响的行数
|
||
- 通常 `result > 0` 表示更新成功
|
||
- 对于批量更新,可以直接使用返回值获取更新的记录数
|
||
|
||
4. **注意事项**:
|
||
- 确保Users对象中设置了需要更新的字段
|
||
- UpdateWrapper中的条件必须正确,避免更新到不应该更新的数据
|
||
- 对于敏感信息更新,建议在调用前进行权限校验
|
||
|
||
## 常见错误
|
||
|
||
1. **忘记设置更新字段**:确保在Users对象中设置了需要更新的字段值
|
||
2. **条件过于宽松**:避免使用没有限制条件的UpdateWrapper,这可能导致更新所有记录
|
||
3. **字段名错误**:确保UpdateWrapper中使用的列名与数据库表中的列名一致
|
||
|
||
通过使用UpdateWrapper,你可以灵活地构建各种更新条件,而不需要编写复杂的SQL语句,同时也提高了代码的可读性和可维护性。 |