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; } }。给代码写一些详细注释
时间: 2024-02-06 21:02:22 浏览: 71
好的,以下是对代码的详细注释:
```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。
阅读全文