SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
时间: 2024-04-26 17:22:54 浏览: 6
这是一段Java代码,其中调用了一个名为`checkRoleKeyUnique`的方法,该方法接受一个`role.getRoleKey()`作为参数,返回一个`SysRole`类型的对象`info`。
根据命名规范来看,`roleMapper`应该是一个数据访问层的对象,用于操作数据库中的`SysRole`表或者视图。`checkRoleKeyUnique`的作用可能是检查`roleKey`是否唯一,如果不唯一则返回相应的`SysRole`对象,否则返回`null`。
需要注意的是,这段代码中的变量和方法调用都需要根据具体的上下文来理解。
相关问题
public GlobalResponse userLogin(LoginParam param) { // 2、校验账号信息 [校验密码输入失败次数] SysUser user = sysUserService.checkPwd(param.getPhone(), param.getPassword()); // 用户禁用返回登录失败 if (user.getStatus().equals(StatusEnum.STOP.getType())) { throw new BusinessException("账户被禁用"); } List<SysRole> roles = sysRoleService.findRoleByUserId(user.getId()); SysRole sysRole = roles.get(0); LoginUser build = LoginUser.builder() .id(user.getId()) .name(user.getUserName()) .avatar(user.getAvatar()) .phone(user.getPhone()) .roleCode(sysRole.getRoleCode()) .roleName(sysRole.getRoleName()) .build(); Set<String> perms = sysRoleMenuRelService.selectMenuPermsByUserId(build); build.setPerms(perms); String token = sysTokenService.createToken(build); return GlobalResponse.success(token); }我还要返回userId,怎么改
你可以将返回类型改为一个包含 userId 和 token 的对象,例如:
```
@Data
public class LoginResult {
private Long userId;
private String token;
}
```
然后修改方法的返回值为该对象类型,并在方法最后返回包含 userId 和 token 的对象,例如:
```
public LoginResult userLogin(LoginParam param) {
// 2、校验账号信息 [校验密码输入失败次数]
SysUser user = sysUserService.checkPwd(param.getPhone(), param.getPassword());
// 用户禁用返回登录失败
if (user.getStatus().equals(StatusEnum.STOP.getType())) {
throw new BusinessException("账户被禁用");
}
List<SysRole> roles = sysRoleService.findRoleByUserId(user.getId());
SysRole sysRole = roles.get(0);
LoginUser build = LoginUser.builder()
.id(user.getId())
.name(user.getUserName())
.avatar(user.getAvatar())
.phone(user.getPhone())
.roleCode(sysRole.getRoleCode())
.roleName(sysRole.getRoleName())
.build();
Set<String> perms = sysRoleMenuRelService.selectMenuPermsByUserId(build);
build.setPerms(perms);
String token = sysTokenService.createToken(build);
LoginResult result = new LoginResult();
result.setUserId(user.getId());
result.setToken(token);
return result;
}
```
public class RoleServiceImpl implements RoleService { SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); //重写父类 RoleService的方法 @Override //传入参数 Integer[]类型的 roleIds 返回值类型为 Set<String> public Set<String> queryByIds(Integer[] roleIds) { //设置事务为自动提交 SqlSession sqlSession = sqlSessionFactory.openSession(true); //加载 MarketRoleMapper文件 获得引用 roleMapper MarketRoleMapper roleMapper = sqlSession.getMapper(MarketRoleMapper.class); //创建一个 Set<String> 类型的引用 roles Set<String> roles = new HashSet<String>(); //判断 传入的 roleIds 的长度 如果为0 执行if语句返回roles if(roleIds.length == 0){ return roles; } //否则创建一个 MarketRoleExample example = new MarketRoleExample(); example.or().andIdIn(Arrays.asList(roleIds)).andEnabledEqualTo(true).andDeletedEqualTo(false); List<MarketRole> roleList = roleMapper.selectByExample(example); sqlSession.commit(); for(MarketRole role : roleList){ roles.add(role.getName()); } return roles; } }。给代码写一些详细注释
好的,以下是对代码的详细注释:
```java
public class RoleServiceImpl implements RoleService {
//获取 MyBatis 的 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
//重写 RoleService 的 queryByIds 方法
@Override
//传入参数 Integer[] 类型的 roleIds,返回值类型为 Set<String>
public Set<String> queryByIds(Integer[] roleIds) {
//设置事务为自动提交
SqlSession sqlSession = sqlSessionFactory.openSession(true);
//加载 MarketRoleMapper 文件,获得引用 roleMapper
MarketRoleMapper roleMapper = sqlSession.getMapper(MarketRoleMapper.class);
//创建一个 Set<String> 类型的引用 roles
Set<String> roles = new HashSet<String>();
//判断传入的 roleIds 的长度,如果为0,执行 if 语句返回 roles
if(roleIds.length == 0){
return roles;
}
//否则创建一个 MarketRoleExample 对象 example
MarketRoleExample example = new MarketRoleExample();
//设置 example 的查询条件:id 在 roleIds 中,enabled 为 true,deleted 为 false
example.or().andIdIn(Arrays.asList(roleIds)).andEnabledEqualTo(true).andDeletedEqualTo(false);
//执行 example 对应的查询语句,返回查询结果放入 roleList 中
List<MarketRole> roleList = roleMapper.selectByExample(example);
//提交事务
sqlSession.commit();
//遍历 roleList,将每个 MarketRole 对象的 name 添加到 roles 中
for(MarketRole role : roleList){
roles.add(role.getName());
}
//返回 roles
return roles;
}
}
```
这段代码的作用是实现了 RoleService 接口中的 queryByIds 方法,通过传入一个 Integer 类型的数组 roleIds,返回一个 Set<String> 类型的 roles。其中,roles 中存储的是查询到的 roleIds 对应的所有角色名字。
实现的具体步骤是:
1. 获取 MyBatis 的 SqlSessionFactory。
2. 通过 SqlSession.getMapper() 方法获取 MarketRoleMapper 的引用 roleMapper。
3. 创建一个 Set<String> 类型的引用 roles。
4. 判断传入的 roleIds 的长度,如果为 0,直接返回 roles。
5. 如果传入的 roleIds 不为空,则创建一个 MarketRoleExample 对象 example,并设置查询条件:id 在 roleIds 中,enabled 为 true,deleted 为 false。
6. 通过 roleMapper.selectByExample(example) 方法执行查询,将查询结果放入 roleList 中。
7. 遍历 roleList,将每个 MarketRole 对象的 name 添加到 roles 中。
8. 最后返回 roles。