mybatis如何接收返回类型为Set

发布于 2022-09-05 22:18:21 字数 368 浏览 10 评论 0

现在想接收返回值为Set<String> 的列表,结果发现里面没有看到相关的方法,不知这种要如何处理呢?
尝试了

  HashSet<String> roles = sqlSessionTemplate.selectList("ShiroUser.findAllRoleNameByUsername",uname)

    HashSet<String> roles = sqlSessionTemplate.select("ShiroUser.findAllRoleNameByUsername",uname);

结果都报错,网上搜索也没能看到相关解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

阳光的暖冬 2022-09-12 22:18:21

返回参数写 resultType="String" 即可。
例如:
mapping.xml文件

<select id="selectPk" resultType="String">
  select pk_id from user_operation order by create_time desc 
</select>

mapper文件

Set<String> selectPk();

获取数据,比如直接写在Controller中

Set<String> result = this.mapper.selectPk();
        System.out.println(result);
        if (result.size() > 0) {
            for (String id : result) {
                System.out.println(id);
            }
        }
徒留西风 2022-09-12 22:18:21

MyBatis是直接返回List的,可以直接像 @Rebuilding127 的回答使用Mapper类配置来做自动List转换Set。如果要用SqlSession来读取数据的话,可以自动做List到Set的转换,即:

List<String> roleList = sqlSessionTemplate.selectList("ShiroUser.findAllRoleNameByUsername", uname);
Set<String> roleSet = new HashSet<>(roleList);
灯下孤影 2022-09-12 22:18:21

mybatis源码里面就没有返回值为set的接口,这个现实不了的,只能自己来做逻辑处理了

小梨窩很甜 2022-09-12 22:18:21

自己处理一下吧,没有直接返回set的

讽刺将军 2022-09-12 22:18:21

list不就行了, 反正一个值加个DISTINCT就好了一样不会重

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文