mybatis返回值_存储过程获取查询结果

mybatis返回值_存储过程获取查询结果com.jerry.mapper.TestMapper.javapackagecom.jerry.mapper;importjava.util.List;importjava.util.Map;publicinterfaceTestMapper{ /** *查寻单个结果直接返回Map<String,Object> *@paramid *…………..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

测试数据

数据库 SQL测试数据 – 笑虾原创诗词表

查询返回单个结果

返回单个 Map

设置返回值类型 resultType="java.util.Map"

PoemMapper.xml

    <select id="selectMap" resultType="java.util.Map">
        SELECT id, title, author FROM poem LIMIT 1   
    </select>

PoemMapper.java

Map为最外层容器时就要加 @MapKey("id") 指定提取 id 作为 key

    @MapKey("id")
    Map<Long, Object> selectMap();

PoemMapperTest.java

    @Test
    public void selectMap() { 
   
        Map<Long, Object> map = poemMapper.selectMap();
        System.out.println(JSON.toJSONString(map));
    }  

输出结果

注意:Map是无序的,所以这里的字段并没有按SQL中的顺序来显示。

{ 
   "1":{ 
   "author":"笑虾","id":1,"title":"痴情癫"}}

返回单个 LinkedHashMap

用来实现按SQL中的顺序来显示字段。

PoemMapper.xml

设置返回值类型 resultType="java.util.LinkedHashMap"

    <select id="selectLinkedHashMap" resultType="java.util.LinkedHashMap">
        SELECT id, title, author FROM poem LIMIT 1
    </select>

PoemMapper.java

LinkedHashMap<String, Object> selectLinkedHashMap();    

PoemMapperTest.java

LinkedHashMap<String, Object> linkedHashMap = poemMapper.selectLinkedHashMap();

输出结果

注意:LinkedHashMap字段SQL中的顺序显示。

{ 
   "id":1,"title":"痴情癫","author":"笑虾"}

查询返回多个结果

  1. List保留住SQLORDER By的排序。
  2. LinkedHashMap保留住SQLSELECT 字段的排序。

返回 List<Map>

PoemMapper.xml

    <select id="selectMapList" resultType="java.util.Map">
        SELECT id, title, author FROM poem
    </select>

PoemMapper.java

List<Map<String, Object>> selectMapList();

PoemMapperTest.java

List<Map<String, Object>> maps = poemMapper.selectMapList();

输出结果

[
	{ 
   "author":"笑虾","id":1,"title":"痴情癫"},
	{ 
   "author":"笑虾","id":2,"title":"爱云说"},
	{ 
   "author":"笑虾","id":3,"title":"恨灯小"}, 
	略。。。
]

返回 Map<Map>

PoemMapper.xml

    <select id="selectMapMap" resultType="java.util.Map">
        SELECT id, title, author FROM poem 
    </select>

PoemMapper.java

@MapKey("id")
Map<String, Map<String, Object>> selectMapMap();

PoemMapperTest.java

Map<String, Map<String, Object>> stringMapMap = poemMapper.selectMapMap();

输出结果

{ 
   
	"1":{ 
   "author":"笑虾","id":1,"title":"痴情癫"},
	"2":{ 
   "author":"笑虾","id":2,"title":"爱云说"},
	"3":{ 
   "author":"笑虾","id":3,"title":"恨灯小"},
	略。。。
}

返回 List<LinkedHashMap>

PoemMapper.xml

    <select id="selectListLinkedHashMap" resultType="java.util.LinkedHashMap">
        SELECT id, title, author FROM poem
    </select>

PoemMapper.java

List<LinkedHashMap<String, Object>> selectListLinkedHashMap();    

PoemMapperTest.java

List<LinkedHashMap<String, Object>> linkedHashMap = poemMapper.selectListLinkedHashMap();

输出结果

[
	{ 
   "id":1,"title":"痴情癫","author":"笑虾"},
	{ 
   "id":2,"title":"爱云说","author":"笑虾"},
	{ 
   "id":3,"title":"恨灯小","author":"笑虾"},
	略。。。
]

返回 Map<LinkedHashMap>

PoemMapper.xml

    <select id="selectMapLinkedHashMap" resultType="java.util.LinkedHashMap">
        SELECT id, title, author FROM poem
    </select>

PoemMapper.java

@MapKey("id")
Map<String, LinkedHashMap<String, Object>> selectMapLinkedHashMap();

PoemMapperTest.java

Map<String, LinkedHashMap<String, Object>> mapLinkedHashMaps = poemMapper.selectMapLinkedHashMap();

输出结果

{ 
   
	"1":{ 
   "id":1,"title":"痴情癫","author":"笑虾"},
	"2":{ 
   "id":2,"title":"爱云说","author":"笑虾"},
	"3":{ 
   "id":3,"title":"恨灯小","author":"笑虾"},
	略。。。
}

统计结果返回 List<Pair<Integer, Long>> 再转 Map<Integer, Long>>

PoemMapper.xml

    <select id="countByAuthor" resultType="javafx.util.Pair">
        SELECT author,	count( id ) AS `数量` FROM	poem GROUP BY author
    </select>

PoemMapper.java

List<Pair<Integer, Long>> countByAuthor();

PoemMapperTest.java

List<Pair<Integer, Long>> list = poemMapper.countByAuthor();
Map<Integer, Long> map = list.stream()
        .collect(Collectors.toMap(Pair::getKey, Pair::getValue));

输出结果

查询结果返回的是这样的一个List<Pair>List<Map>实现也可以。

[{ 
   "key":"笑虾","value":16},{ 
   "key":"金小侠","value":3}]

还需要用Collectors.toMap转为Map才得到我们想要的最终效果。

{ 
   "笑虾":16,"金小侠":3}

参考资料

笑虾:Mybatis 查询结果返回 Optional<T>

javafx.util.Pair<K,V>
《Java8实战》 – 读书笔记 – Stream流操作2:用流收集数据:6.1 收集器简介 – toMap

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185900.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • #Android单元测试学习总结「建议收藏」

    #Android单元测试学习总结「建议收藏」文章目录一、本地单元测试1.创建测试类2.Assert类中的常用断言方法3.运行测试类4.运行单个测试方法或多个测试类二、Mockito测试框架的使用1.Mock概念的理解2

  • python 自带的word2vec讲解_word2vec训练

    python 自带的word2vec讲解_word2vec训练word2vec理解学习nlp最先了解的概念应该就是词嵌入(wordembedding)吧,Word2vec是谷歌于2013年提出的一种有效的词嵌入的方法,采用了两种模型(CBOW与skip-gram模型)与两种优化方法(负采样与层次softmax方法)的组合。现在使用Word2vec获得词的向量表达,并将其应用于各种nlp任务中已经非常常见。由于我们要用计算机来完成各种自然语言理解的任务,而…

  • android开发之提高应用启动速度_splash页面瞬间响应_避免APP启动闪白屏

    Application和Activity中的onCreate都进行了优化,基本没有耗时操作,但是启动应用之后还是会闪现一下白色背景,然后才进入Splash页面,对比了一下QQ、微信、微博等客户端,点击之后都是瞬间响应Splash启动页,差别在哪里呢。其实就算你onCreate啥都不做,仍然会闪一下白屏,因为初始化解析界面时需要一定时间,解决方法是自定义Theme。自定义如下AppSplash” p

  • matlab fprintf函数_matlab绝对值函数

    matlab fprintf函数_matlab绝对值函数matlab中fprintf函数的用法详解:fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:数据的格式化输出:fprintf(fid,format,variables)按指定的格式将变量的值输出到屏幕或指定文件,fid为文件句柄,若缺省,则输出到屏幕format用来指定数据输出时采用的格式%d整数%e实数:科学计算法形式%f实数:小数形式%g由系统自动选取上述两种…

    2022年10月19日
  • 高德地图自定义点标记大小_高德地图标注点点击事件 自定义参数

    高德地图自定义点标记大小_高德地图标注点点击事件 自定义参数init(){varprovinces=this.provinces;if(!provinces||provinces.length==0){returnfalse;}varhmap={resizeEnable:true,center:[“106.687915″,”26.499209”],zoom:10};varmap=newAMap.Map(“cont…

  • Java 排列组合_c语言排列组合函数

    Java 排列组合_c语言排列组合函数importjava.util.Arrays;//利用二进制算法进行全排列//count1:170187//count2:291656publicclasstest{publicstaticvoidmain(String[]args){longstart=System.currentTimeMillis();count2();longend=System.currentTim…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号