feat: 添加用户、角色服务和验证工具类

新增用户服务实现类UsersServiceImpl,包含用户CRUD操作
新增角色服务实现类RolesServiceImpl,包含角色管理功能
新增验证工具类ValidateUtil,提供参数验证功能
更新所有实体类添加@Builder注解
更新所有Mapper接口添加selectInfo和updateInfo方法
更新application.properties添加server.port配置
修复OrdersServiceImpl中Logger使用问题
添加updateInfo方法使用文档
This commit is contained in:
qingfeng1121
2025-11-25 15:30:27 +08:00
parent 5aa2017eef
commit 7536c8087e
48 changed files with 1107 additions and 31 deletions

View File

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