千家信息网

扩展tk.mybatis的流式查询功能如何实现

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"扩展tk.mybatis的流式查询功能如何实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"扩展tk.mybatis的流式查询功能如何实
千家信息网最后更新 2025年01月19日扩展tk.mybatis的流式查询功能如何实现

本篇内容主要讲解"扩展tk.mybatis的流式查询功能如何实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"扩展tk.mybatis的流式查询功能如何实现"吧!

mybatis查询默认是一次获取全部, 有时候需要查询上万上百万数据时,如果一次性读取到内存中,会容易导致OOM问题。这时候需要采用流式查询。以下扩展了tk.mybatis的流式查询功能。

@Options注解是关键

import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.SelectProvider;import org.apache.ibatis.mapping.ResultSetType;import org.apache.ibatis.session.ResultHandler;/** * 通用Mapper接口,流式查询 * * @param  不能为空 * @author sunchangtan */@tk.mybatis.mapper.annotation.RegisterMapperpublic interface SelectStreamByExampleMapper {    /**     * 根据example条件和RowBounds进行流式查询     *     * @param example     * @return     */    @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = 1000)    @SelectProvider(type = StreamExampleProvider.class, method = "dynamicSQL")    void selectStreamByExampleMapper(Object example, ResultHandler resultHandler);}

带RowBounds的流式查询

import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.SelectProvider;import org.apache.ibatis.mapping.ResultSetType;import org.apache.ibatis.session.ResultHandler;import org.apache.ibatis.session.RowBounds;/** * 通用Mapper接口,流式查询 * * @param  不能为空 * @author sunchangtan */@tk.mybatis.mapper.annotation.RegisterMapperpublic interface SelectStreamByExampleRowBoundsMapper {    /**     * 根据example条件和RowBounds进行流式查询     *     * @param example     * @return     */    @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = 1000)    @SelectProvider(type = StreamExampleProvider.class, method = "dynamicSQL")    void selectStreamByExampleRowBoundsMapper(Object example, RowBounds rowBounds, ResultHandler resultHandler);}

流式ExampleProvider

import org.apache.ibatis.mapping.MappedStatement;import tk.mybatis.mapper.mapperhelper.MapperHelper;import tk.mybatis.mapper.provider.ExampleProvider;/** * 流式查询的SqlProvider * @author sunchangtan */public class StreamExampleProvider extends ExampleProvider {    public StreamExampleProvider(Class mapperClass, MapperHelper mapperHelper) {        super(mapperClass, mapperHelper);    }    /**     * 根据Example流式查询     *     * @param ms     * @return     */    public String selectStreamByExampleMapper(MappedStatement ms) {        return this.selectByExample(ms);    }    /**     * 根据Example和RowBounds流式查询     * @param ms     * @return     */    public String selectStreamByExampleRowBoundsMapper(MappedStatement ms) {        return this.selectByExample(ms);    }}

将SelectStreamByExampleMapper和SelectStreamByExampleRowBoundsMapper组合成一个接口

/** * 流式查询接口 * @param  * @author sunchangtan */@tk.mybatis.mapper.annotation.RegisterMapperpublic interface StreamMapper extends        SelectStreamByExampleMapper,        SelectStreamByExampleRowBoundsMapper {}

在BaseMapper中加入StreamMapper

/** * Mapper的基类 * @author sunchangtan * @param  */public interface BaseMapper extends Mapper, MySqlMapper, StreamMapper {}

使用例子:

this.userMapper.selectStreamByExampleRowBoundsMapper(example, new RowBounds(0, 1), resultContext -> {     User user= (User) resultContext.getResultObject();     System.out.println(user); });this.userMapper.selectStreamByExampleMapper(example, resultContext -> {    User user= (User) resultContext.getResultObject();    System.out.println(User);});

到此,相信大家对"扩展tk.mybatis的流式查询功能如何实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

查询 功能 查询功能 接口 内容 条件 学习 实用 更深 一次性 例子 关键 兴趣 内存 实用性 实际 操作简单 数据 方法 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发详细设计报告 如何测试是否已经连上服务器 江苏网络技术服务机构 济南地图软件开发 软件开发方法螺旋模型 网络安全管理中心建设 商丘学院计算机网络技术 茅箭区智能软件开发售后保障 网络安全发展历史有哪些阶段 叔叔阿姨网络安全宣传 网络安全和信息管理制度 医院网络安全应急处置方案 手机炉石传说与谷歌服务器通讯 如何开展网络安全宣传周 网络安全四个区域 手游lol切换服务器 方舟搜索服务器设置 山东晶橙网络技术有限公司靠谱吗 数据库开发有什么专业 深圳四海全球链路网络技术 网吧服务器怎么设置 数据库设计会员套餐 图数据库中建立边的语句 软件开发物业系统 武汉大学网络安全学院官网研究生 手机炉石传说与谷歌服务器通讯 基于mysql数据库的小项目 想学软件开发学费是多少钱啊 北京pdu服务器专用电源哪里买 1.打开数据库企业管理器
0