扩展tk.mybatis的流式查询功能如何实现
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"扩展tk.mybatis的流式查询功能如何实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"扩展tk.mybatis的流式查询功能如何实
千家信息网最后更新 2026年11月03日扩展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安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
上海卓越科技互联网
山东特亿宝互联网科技有限公司
中关村互联网科技集团
科技企业和互联网企业
互联网科技未来
互联网络科技有限公司
万达互联网科技
伴你行互联网科技有限公司
镁科技互联网资讯平台
温州喔噻互联网科技有限公司
字节跳动和互联网科技
湖南诚度互联网科技有限公司
佳云科技和互联网广告
岳阳华臻互联网科技有限公司
赶超互联网科技 微信多开
区块链结合互联网科技
21世纪互联网科技成就
九思连强互联网电子科技有限公司
美国五大互联网科技公司市值多少
互联网科技工作委员会
国智互联网科技
互联网科技战争
腾讯科技 互联网女皇
互联网公司会议桌创意科技软装饰
深圳国际航运科技和互联网
互联网公司科技股
银行科技岗属于互联网吗
唯美互联网科技
米泉互联网科技专业怎么样