MyBatis中ResultHandler的使用
时间:2019-11-05
本文章向大家介绍MyBatis中ResultHandler的使用,主要包括MyBatis中ResultHandler的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有一种场景,到处100万条数据,如果在mybatis把整个数据查询到list中。
那么,就有一个问题,如果数据量大的话,就会导致大对象,内存溢出(OOM)。
这个时候我们就可以利用Mybatis中的ResultHandler来处理。
ResultHandlerj接口只有一个方法handleResult,这个方法的作用是:
我们可以在这里添加处理每一条(sql查询返回的每一条数据)数据的逻辑。
public class MyExport implements ResultHandler { @Override public void handleResult(ResultContext resultContext) { Object resultObject = resultContext.getResultObject(); System.out.println(resultObject.toString()); // 在这里将每一条数据写入文件 } }
void selectVideoList(ResultHandler<Video> resultHandler);
<select id="selectVideoList" resultType="com.pig.hportal.model.Video">
select * from video limit 10
</select>
test方法
@SpringBootTest(classes = HApplication.class) @RunWith(SpringRunner.class) public class MainTest { @Autowired private VideoMapper videoMapper; @Test public void test() { MyExport export = new MyExport(); videoMapper.selectVideoList(export); System.out.println("ok"); } }
这里注意:
我们sql返回值为void,所以我们没有并没有接受这个返回值。所以不会产生大对象。
原文地址:https://www.cnblogs.com/windy13/p/11801813.html
- 设计模式专题(七)——建造者模式
- ASP.NET AJAX(14)__UpdatePanel与服务器端脚本控件脚本控件的作用脚本控件的指责Extender模型脚本控件和Extender模型在PostBack中保持状态在UpdatePa
- ASP.NET AJAX(15)__构建高性能ASP.NET AJAX应用UpdatePanel的性能问题使用UpdatePanel的注意事项脚本加载避免脚本阻塞页面显示AjaxControlTool
- LINQ to SQL(1):基础入门
- 设计模式专题(十)——观察者模式
- LINQ to SQL(2):生成对象模型
- 使用 Oracle 的 Security External Password Store 功能实现数据库加密登陆
- LINQ to SQL(3):增删改查
- LINQ to SQL(4):OR设计器
- 在不同浏览器都实用的各窗口大小获取方法
- JavaScript获得对象属性个数的方法
- 设计模式专题(十一)——抽象工厂模式
- Canvas 图形组合方式
- HTML5 FileReader接口学习笔记
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python局部变量与全局变量区别原理解析
- 为什么是 Python -m
- Python csv文件记录流程代码解析
- 简单的Python人脸识别系统
- PHP实现的微信公众号扫码模拟登录功能示例
- PHP获取数据库表中的数据插入新的表再原删除数据方法
- python3 中时间戳、时间、日期的转换和加减操作
- PHP通过文件路径获取文件名的实例代码
- PHP常用正则表达式精选(推荐)
- PHP观察者模式实例分析【对比JS观察者模式】
- PHP实现图片压缩
- Python库安装速度过慢解决方案
- PHP按一定比例压缩图片的方法
- PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
- django restframework serializer 增加自定义字段操作