MyBatis 封装Map,返回不同实体的集合对象
博文发布出发点:
1.现在有一个需求,就是从100个表中获得任意表中的数据,按照正常的思维模式和处理方式,
我们首先会创建100个实体类(累死!),然后通过resultType一一对应实体类,这种方式简直...
2.我们不通过创建实体类,来获得一个表中的所有数据,或者部分数据的键值对形式的值,我们该怎么做?
那么我们下面将会用一种相对高效的方式来解决问题!
最初的想法,汇聚成了如下的代码
List<Object> findStatisData(); <mapper namespace="cn.arebirth.mapper.IncomeMapper">
<select id="findStatisData" resultType="java.lang.Object">
select * from data
</select>
</mapper>
但是这样写拿到的数据只有一列,这时为什么??sql语句都没有问题?
原因是,当我们的resultType写成一个实体类的时候,MyBatis首先会找这个实体类里面的字段,然后根据字段进行映射,
但是我们的Object对象它里面有字段吗???
当然是没有的,所以只能获得一个值。
-------------------------------------------------------------------
像这种想要返回实体类的东西我们还得借助Map<String,Object>,为什么呢?
String就相当于实体类里面的具体属性字段,而Object就是存储值的
所以我们的写法应该是这样的
/*
Warning:
这里边如果是要获取多个值的话就必须写成List<Map<String,Object>>
如果要写成Map<String,Object>,它只会获取一条数据,如果你查询的是多条数据的话,还会报异常!!
*/
List<Map<String,Object>> findStatisData(); <mapper namespace="cn.arebirth.mapper.IncomeMapper">
<select id="findStatisData" resultType="java.util.Map">
select * from data
</select>
</mapper>
这样的话我们就可以获得所有的字段名加值的lList集合嵌套Map的值了。
最终我们可以通过如下的方式,打印出所有的key(留给比较懵逼的同学看)
package cn.arebirth.test; import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import cn.arebirth.mapper.IncomeMapper;
import cn.arebirth.util.MyBatisUtil; public class TestIncome { @Test
public void test() {
SqlSession session = MyBatisUtil.getSession();
IncomeMapper mapper = session.getMapper(IncomeMapper.class); List<Map<String,Object>> data = mapper.findStatisData();
for (int i = 0; i < data.size(); i++) {
HashMap<Object, Object> map = (HashMap)data.get(i);
Set<Object> keySet = map.keySet();
System.out.println(keySet.toString());
}
} }
MyBatis 封装Map,返回不同实体的集合对象的更多相关文章
- MyBatis3_[tp-26-27]_映射文件_select_返回List_记录封装Map:返回单个元素的Map或者整体Map集合
笔记要点出错分析与总结工程组织 1.定义接口 public interface EmployeeMapper { //多条记录封装到一个map中: Map<Integer,Employee> ...
- spring boot加mybatis使用Map返回时,当值为空时属性也会没有(转)
使用spring boot加mybatis时,设置Map返回,当值为空时属性也会没有,就会报错 在application.properties中加入下面配置,将会解决这个问题. #当查询数据为空时 ...
- 使用MyBatis时接收值和返回值选择Map类型或者实体类型
MyBatis作为现近JavaEE企业级项目开发中常用的持久层框架之一,以其简洁高效的ORM映射和高度的SQL的自由性被广大开发人员认可.Mybatis在接收系统传来的参数和返回的参数时主要可以有Ma ...
- 【mybatis】mybatis查询 结果 用map接收,无实体接收 + 关联子表 一并返回主子表的结果
如果后台程序没有实体对应mysql的数据表. 而mybatis想要查询mysql这个数据表的数据,返回给应用程序. 应用程序该如何接收? =============================== ...
- Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合
存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当 ...
- JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面
将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...
- Java工具类 通过ResultSet对象返回对应的实体List集合
自从学了JDBC用多了像一下这种代码: List<xxx> list = new Array<xxx>(); if(rs.next()){ xxx x = new xxx(); ...
- (转)Mybatis insert后返回主键给实体对象(Mysql数据库)
<insert id="insert" parameterType="com.zqgame.game.website.models.Team"> & ...
- mybatis设置Map空值返回
mybatis时,设置Map返回,当值为空时属性也会没有 在application.properties中加入下面配置,将会解决这个问题. #当查询数据为空时字段返回为null,不加这个查询数据为空时 ...
随机推荐
- linux初学者-输出输入管理
1.输出重定向 在linux中,因为用户的权限不同,所以访问某些文件或者目录会被拒绝而形成错误输出,这些错误的输出也会显示出来.一般正确输出的编号为1,错误输出的编号为2.如下图,在普通用户stu ...
- python基础——变量
变量是只不过保留的内存位置用来存储值.这意味着,当创建一个变量,那么它在内存中保留一些空间. 根据一个变量的数据类型,解释器分配内存,并决定如何可以被存储在所保留的内存中.因此,通过分配不同的数据类型 ...
- SpringBoot Admin 使用指南
什么是 SpringBoot Admin? Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序.这些应用程序通过 Spring Boot Admin ...
- 用wxpy管理微信公众号,并利用微信获取自己的开源数据。
之前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口.调用接口并保存双方的问答结果可以作为自己的问答词库的一个数据库累计.这些数据可以用于自己训练. 而最近希望获取一些语音资 ...
- three出现状态200的报错
报错代码如下: {status: 200, data: {…}} "sa_SpringUserFindOneView_findPbUserByUserId"header.vue?1 ...
- [ PyQt入门教程 ] PyQt5信号与槽
信号和槽是PyQt编程对象之间进行通信的机制.每个继承自QWideget的控件都支持信号与槽机制.信号发射时(发送请求),连接的槽函数就会自动执行(针对请求进行处理).本文主要讲述信号和槽最基本.最经 ...
- WeihanLi.Npoi 导出支持自定义列内容啦
WeihanLi.Npoi 导出支持自定义列内容啦 Intro 之前也有网友给提出过希望列合并或者自定义列内容的 issue 或请求,起初因为自己做 WeihanLi.Npoi 这个扩展的最初目的是导 ...
- ASP.NET Core Web API 跨域(CORS) Cookie问题
身为一个Web API,处理来自跨域不同源的请求,是一件十分合理的事情. 先上已有的文章,快速复制粘贴,启用CORS: Microsoft:启用 ASP.NET Core 中的跨域请求 (CORS) ...
- 神奇的 SQL 之子查询,细节满满 !
前言 开心一刻 有一天,麻雀遇见一只乌鸦. 麻雀问:你是啥子鸟哟 ? 乌鸦说:我是凤凰. 麻雀说:哪有你龟儿子这么黢黑的凤凰 ? 乌鸦说:你懂个铲铲,老子是烧锅炉的凤凰. 子查询 讲子查询之前,我们先 ...
- C# Winform 自定义控件——竖着的Navbar
效果: 描述: 这是一个可折叠的菜单导航,主要是由panel.picturebox.label完成,界面的颜色用来区分一下各个组合控件,便于调试. 首先,首先是ImageButton: 这个是由Pic ...