mybatis返回值_存储过程获取查询结果
2023-06-13 09:14:48 时间
Mybatis 查询结果返回 Map、List<Map>、Pair
测试数据
查询返回单个结果
返回单个 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":"笑虾"}
查询返回多个结果
- 用
List
保留住SQL
中ORDER By
的排序。 - 用
LinkedHashMap
保留住SQL
中SELECT 字段
的排序。
返回 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}
参考资料
javafx.util.Pair<K,V> 《Java8实战》 – 读书笔记 – Stream流操作2:用流收集数据:6.1 收集器简介 – toMap
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185900.html原文链接:https://javaforall.cn
相关文章
- mybatis的逆向工程怎么实现_mybatis逆向工程原理
- MyBatis配置中的#{}和${}有什么区别?
- Mybatis实现*mapper.xml热部署-分子级更新
- Spring集成MyBatis 事务管理
- SSM-Spring整合Mybatis[通俗易懂]
- MyBatis框架:第二章:传统mybatis的hello world 示例
- MyBatis框架:第十章:mybatis缓存
- MyBatis框架:第六章:mybatis的核心配置
- MyBatis框架:第二章:传统mybatis的hello world 示例
- mybatis返回对象_存储过程不能返回结果
- mybatis获取map的key_mybatis怎么处理结果集
- mybatis-plus小技能
- Mybatis返回集合类型到底是空集合还是null??源码解读
- 解决mybatis-plus分页查询不生效,配置分页拦截器
- SpringBoot之(二):基础篇—SpringBoot+Mybatis+MySql增删改查详解程序员
- 前端传参数进行Mybatis调用mysql存储过程执行返回值详解
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- spring+mybatis 多数据源切换详解编程语言
- 一个简单的MyBatis连接Oracle数据库的例子详解编程语言
- 把EXCEL用程序导入到ORACLE中(SpringMVC+MyBatis)详解编程语言
- SpringMVC与mybatis整合详解编程语言