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

5.3 KiB
Raw Blame History

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);
    }
}

使用说明

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