解释 public User register(User user) { QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.eq("username", user.getUsername()).eq("is_delete", 0); User existUser = userMapper.selectOne(wrapper); if (existUser != null) { throw new RuntimeException("用户名已存在!"); } PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); user.setPassword(passwordEncoder.encode(user.getPassword())); user.setCreateTime(new Date()); user.setIsDelete(0); userMapper.insert(user); return user; }
时间: 2024-04-13 14:26:53 浏览: 167
mybatis-plus QueryWrapper自定义查询条件的实现
5星 · 资源好评率100%
上述代码是一个用户注册的方法。具体解释如下:
1. 首先,创建一个QueryWrapper对象`wrapper`,用于构建查询条件。通过`eq`方法设置查询条件为用户名等于`user.getUsername()`并且`is_delete`等于0(表示未删除状态)。
2. 调用`userMapper`的`selectOne`方法,传入`wrapper`对象作为参数,执行查询操作,并将结果赋值给`existUser`变量。这里使用的是MyBatis-Plus框架的查询方法,根据条件查询符合条件的一条记录。
3. 接下来,判断`existUser`是否为null。如果不为null,说明用户名已存在,抛出一个运行时异常,提示“用户名已存在!”。
4. 如果用户名不存在,则继续执行后续操作。首先,创建一个PasswordEncoder对象`passwordEncoder`,用于对密码进行加密。这里使用的是BCryptPasswordEncoder加密算法。
5. 调用`passwordEncoder`的`encode`方法,传入`user.getPassword()`作为参数,对用户输入的密码进行加密,并将加密后的密码设置到`user`对象中。
6. 设置`user`对象的创建时间为当前时间(new Date()),将isDelete字段设置为0(表示未删除状态)。
7. 调用`userMapper`的`insert`方法,将`user`对象插入到数据库中。
8. 最后,返回插入成功的`user`对象。
总体来说,该方法实现了用户注册的逻辑,包括校验用户名是否已存在、对密码进行加密、设置创建时间和isDelete字段,并将用户信息插入到数据库中。
阅读全文