Files
TaoTaoWang_backend/doc/updateInfo方法使用模板.md
qingfeng1121 7536c8087e feat: 添加用户、角色服务和验证工具类
新增用户服务实现类UsersServiceImpl,包含用户CRUD操作
新增角色服务实现类RolesServiceImpl,包含角色管理功能
新增验证工具类ValidateUtil,提供参数验证功能
更新所有实体类添加@Builder注解
更新所有Mapper接口添加selectInfo和updateInfo方法
更新application.properties添加server.port配置
修复OrdersServiceImpl中Logger使用问题
添加updateInfo方法使用文档
2025-11-25 15:30:27 +08:00

145 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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语句同时也提高了代码的可读性和可维护性。