mybatis-plus update方法
(转载请删除括号里的内容)
在没有修改之前,是用的
userService.updateById(user);
这个方法访问的话会出现一些问题。修改的时候,传入很多值,修改失败的情况。
看mybatis-plus官方文档,修改的话可以用 update方法,然后用条件构造器指定一些匹配方式,然后传入一个实体类,实体类里面有什么内容就修改什么内容。
条件构造器
修改了相关代码:
用户修改密码:
controller 层:
/** * 修改 */ @LoginRequired @RequestMapping("/update") public R update(@RequestBody UserEntity user) { if (user == null) { return R.error("参数不能为空").put("code", LexueConstant.REGISTER_PARAM_EMPTY); } //1-学生,2-教师,3-管理员 if (user.getUserType() != null && user.getUserType() != 1 && user.getUserType() != 2 && user.getUserType() != 3) { return R.error("用户类型指定错误,1-学生,2-教师,3-管理员").put("code", LexueConstant.REGISTER_USER_TYPE_ERROR); } if (user.getUsername() != null && !StringJudge.checkUsername(user.getUsername())) { return R.error("账号需6-12位的字母或数字").put("code", LexueConstant.REGISTER_USERNAME_ERROR); } if (user.getEmail() != null && !StringJudge.checkEmail(user.getEmail())) { return R.error("请输入正确的邮箱").put("code", LexueConstant.REGISTER_EMAIL_ERROR); } //注意,这里不能修改密码,因为是单向加密的形式,所以这里只能把密码设置成初始状态:123456 if (user.getPassword() != null && user.getPassword().equals("123456")) { user.setPassword(bCryptPasswordEncoder.encode("123456")); } else if (user.getPassword()!=null&&!user.getPassword().equals(userService.getById(user.getId()).getPassword())) { return R.error("只能设置密码为“123456”,请在修改密码的位置修改密码").put("code", LexueConstant.NOT_UPDATE_PASSWORD); } userService.updateUser(user);// userService.updateById(user); return R.ok(); }
service层
@Override public R updateUser(UserEntity userEntity) { if(userEntity==null){ return R.error("参数不能为空").put("code", LexueConstant.NOT_NULL); } if(userEntity.getId()==null||userEntity.getId()<=0){ return R.error("用户id不能为空").put("code", LexueConstant.NOT_NULL); } UpdateWrapper<UserEntity> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id",userEntity.getId()); Integer rows = userDao.update(userEntity, updateWrapper); return R.ok().put("code", LexueConstant.SUCCESS).put("影响的行数", rows+"行"); }
idea重新打包,发布到云服务器上重新运行:
postman修改测试:
后台页面刷新后:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY