mybatis如何使用Map接收返回值

 更新时间:2023年12月07日 08:49:19   作者:DegenerateAng  
这篇文章主要介绍了mybatis如何使用Map接收返回值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Mapperxml SQL文件

<select id="selectLiveActivityL" resultType="Map">
 
    SELECT IFNULL(Set_Value,0) AS Set_Value FROM baseset WHERE Base_Set_Id IN (3,4,5)
 
</select>

取出baseset 表中Base_Set_Id 为3,4,5的数据

如下:

Mapper 接口文件

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

在控制层或者实现层取值

List<Map<String, Object>> listMapO = service.selectLiveActivityL(); 
 
listMapO.get(0).get("Set_Value").toString();//第一个值
 
listMapO.get(1).get("Set_Value").toString();//第二个值 
 
listMapO.get(2).get("Set_Value").toString();//第三个值

前面都单列取值

类似有两列的:

List<Map<String, Object>> listMapF = service.selectLookLiveActivityE();
 
listMapF.get(0).get("Set_Value").toString();
 
listMapF.get(0).get("Set_Value_Duplicate").toString()
 
get(0)控制第几行;
 
get("Set_Value")控制第几列;

返回map和返回映射到实体类的优缺点

优点

首先从上述代码就直接可以看出来,返回为map类型,使用Map作为接收类型时,通常能够在传参到持久层这一过程中省去很多麻烦。

前端请求及参数到达Action或者Controller时通常使用map来进行接收,使用map作为传递类型可以不用再将数据封装为Bean类型再去根据实体属性一一填充,直接通过Service和Dao以map类型将数据传到map配置SQL文件当中,省去很多数据转换环节。

再执行完SQL语句返回时制定map类型返回,不管是单条数据还是List都可以快速编写并返回给前端。

这种方式在处理多表查询时避免了编写大量的实体类和属性字段定义,减少了很多中间流程。

缺点

缺点也一样明显,没有了实体类,自己就需要记好map中的key-value映射关系,其次其数据不能像映射到实体类中那样,重写getter方法。

当另外一个同事来接手和维护时,因为没有了实体类,他只能通过查询map调试,或者查看才能知晓。也不利于后期的维护。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • springboot v2.0.3版本多数据源配置方法

    springboot v2.0.3版本多数据源配置方法

    这篇文章主要介绍了springboot v2.0.3版本多数据源配置方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-11-11
  • iBatis习惯用的16条SQL语句

    iBatis习惯用的16条SQL语句

    iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.这篇文章主要介绍了iBatis习惯用的16条SQL语句的相关资料,需要的朋友可以参考下
    2016-10-10
  • IDEA 2020.3.X 创建scala环境的详细教程

    IDEA 2020.3.X 创建scala环境的详细教程

    这篇文章主要介绍了IDEA 2020.3.X 创建scala环境的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 在Java项目中实现CI/CD持续集成与持续部署

    在Java项目中实现CI/CD持续集成与持续部署

    这篇文章主要为大家介绍了在Java项目中实现CI/CD持续集成与持续部署详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • win10 64位 jdk1.8的方法教程详解

    win10 64位 jdk1.8的方法教程详解

    这篇文章主要介绍了win10 64位 jdk1.8的方法教程详解,本文给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Java中的WeakHashMap概念原理以及简单案例

    Java中的WeakHashMap概念原理以及简单案例

    这篇文章主要介绍了Java中的WeakHashMap概念原理以及简单案例,WeakHashMap使用了软引用结构,它的对象在垃圾回收时会被删除,垃圾回收是优先级非常低的线程,不能被显示调用,当内存不足的时候会启用,需要的朋友可以参考下
    2023-09-09
  • 十分钟理解Java中的动态代理

    十分钟理解Java中的动态代理

    十分钟帮助大家理解Java中的动态代理,什么是动态代理?感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java编程实现基于TCP协议的Socket聊天室示例

    Java编程实现基于TCP协议的Socket聊天室示例

    这篇文章主要介绍了Java编程实现基于TCP协议的Socket聊天室,结合实例形式详细分析了java基于TCP协议的Socket聊天室客户端与服务器端相关实现与使用技巧,需要的朋友可以参考下
    2018-01-01
  • SpringBoot使用Redis实现消息队列的方法小结

    SpringBoot使用Redis实现消息队列的方法小结

    在应用中把Redis当成消息队列来使用已经屡见不鲜了,我想主要原因是当代应用十有八九都会用到 Redis,因此不用再引入其他消息队列系统,而且Redis提供了好几种实现消息队列的方法,用起来也简单,本文给大家介绍了SpringBoot使用Redis实现消息队列的方法小结
    2024-04-04
  • vue用CryptoJS加密,java用CryptoUtil解密

    vue用CryptoJS加密,java用CryptoUtil解密

    CryptoJS是一个JavaScript库,提供了一系列密码学函数和工具,用于加密、解密、生成摘要等任务,本文vue前端使用CryptoJS加密,java后端使用CryptoUtil解密
    2024-09-09

最新评论