当前位置: 首页 > 编程笔记 >

Mybatis查询方法如何实现没有返回值

宰父冠玉
2023-03-14
本文向大家介绍Mybatis查询方法如何实现没有返回值,包括了Mybatis查询方法如何实现没有返回值的使用技巧和注意事项,需要的朋友参考一下

最近在项目开发中发现一件非常有意思的事情,一个Mapper.java文件中有一个查询方法没有返回值,这引起了我的好奇心,

没有返回值查询还有什么用呢?

仔细去看这个Mapper.java文件对应的xml文件发现,查询正常,肯定是有返回值的。

可是为什么方法中却没有写返回值呢?这就让人感觉奇怪了。仔细查看方法,发现除了前面传递的两个参数之外,最后还有一个参数KeyValueMapResultHandler,

那这个参数是用来做什么的呢?点进去一看才知道它的用法。

它实现了一个接口ResultHandler<Map<String, Object>>,继续看这个接口如下:

它是Mybatis提供的接口,里面只有一个 方法handleResult,直译过来就是处理结果的意思。实际的用法是自定义处理Mybatis的查询结果。

由实现类可知,传入的泛型是一个Map集合Map<String, Object>,因此获取的值也将是一个Map集合,如上图中的这两段代码:

public class KeyValueMapResultHandler implements ResultHandler<Map<String, Object>>

Map<String, Object> map = resultContext.getResultObject();

简单理解就是Mybatis提供了一个接口用来自定义处理查询的结果,这个文件中是将查询的结果转换为key-value的形式,放在Map集合中方便取用。

如果是其他更加复杂的操作,也可以采取这种方式来进行处理Mybatis查询的结果集。

调用方式如下:

需要使用的时候,可以考虑采用这种处理方式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍mybatis collection 多条件查询的实现方法,包括了mybatis collection 多条件查询的实现方法的使用技巧和注意事项,需要的朋友参考一下 mybatis collection 多条件查询的实现方法 前言: 业务需要通过mybatis 查询返回嵌套集合,嫌多次查询太麻烦,用自带的高级查询解决问题,下边是代码,已测试通过。 说下自己的理解,就是一个主查询结果集

  • null 这似乎意味着我不像使用简单的“From customer”查询那样获取customer实体的实例。如果是这种情况,如何返回客户实体?如果没有,那我做错了什么?

  • 我保留了一份按“顺序”排列的产品清单。当我试着从房间里拿一份产品清单的时候。我得到以下错误。但我做了一个TypeConvertor。会有什么错误呢? 订单 产品 命令道 转换器 错误 java:53:错误:查询返回的列在com.vepe.navigation.model.entity.product中没有字段[id,orderId,name,pathImage,price,priceDiscoun

  • 我正在实现房间数据库。这是我的POJO类 这是DAO类 在运行我的代码时,我收到以下错误

  • 本文向大家介绍Mybatis实现增删改查及分页查询的方法,包括了Mybatis实现增删改查及分页查询的方法的使用技巧和注意事项,需要的朋友参考一下 MyBatis的前身就是iBatis。是一个数据持久层(ORM)框架。 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持 久层框架。MyBatis消除了几乎所有的JDBC 代码和参数的手工 设置以及结果集的检索。MyBatis使用简单的X

  • 本文向大家介绍MyBatis-Plus 查询返回实体对象还是map,包括了MyBatis-Plus 查询返回实体对象还是map的使用技巧和注意事项,需要的朋友参考一下 在常见场景下:返回数据建议使用map,不建议使用实体对象 遇到了这个问题,迷惘,遂问大神,大神曰:如果是组合体,就用map;如果是单体实体,就用实体。实体类对应单表,多表返回用map。 我想省事全用map,但是那我学了面向对象是用来