现在想接收返回值为Set 的列表,结果发现里面没有看到相关的方法,不知这种要如何处理呢?
尝试了
HashSet roles = sqlSessionTemplate.selectList("ShiroUser.findAllRoleNameByUsername",uname)
HashSet roles = sqlSessionTemplate.select("ShiroUser.findAllRoleNameByUsername",uname);
结果都报错,网上搜索也没能看到相关解决方案。
回答
返回参数写 resultType="String" 即可。
例如:
mapping.xml文件
select pk_id from user_operation order by create_time desc
mapper文件
Set selectPk();
获取数据,比如直接写在Controller中
Set result = this.mapper.selectPk();
System.out.println(result);
if (result.size() > 0) {
for (String id : result) {
System.out.println(id);
}
}
MyBatis是直接返回List的,可以直接像 @Rebuilding127 的回答使用Mapper类配置来做自动List转换Set。如果要用SqlSession来读取数据的话,可以自动做List到Set的转换,即:
List roleList = sqlSessionTemplate.selectList("ShiroUser.findAllRoleNameByUsername", uname);
Set roleSet = new HashSet<>(roleList);
mybatis源码里面就没有返回值为set的接口,这个现实不了的,只能自己来做逻辑处理了
自己处理一下吧,没有直接返回set的
list不就行了, 反正一个值加个DISTINCT就好了一样不会重