项目中因为查询返回的数据量太大,用的是ibatis,所以选择用rowhandler,默认情况下rowhandler一次处理一条数据,有时候性能需要一次性处理一批数据,故写一下简单代码
接口
import com.ibatis.sqlmap.client.event.RowHandler;
public interface BatchRowHandler<T> extends RowHandler {
/**
* 满足一定数量的对象后,执行一次批量数据操作
* @param list
*/
void handBatch();
/**
* 执行最后一批数据的操作,DAO调用RowHandler之后再执行才方法
*/
void handLast();
}
抽象类
import java.util.ArrayList;
import java.util.List;
/**批次hander处理,抽象类
* 注意此类为线程非安全
*
* @author tangwei001
*
* @param <T>
*/
public abstract class AbstractBatchRowHandler<T> implements BatchRowHandler<T> {
private List<T> list;
/**
* 批次大小设置,默认是20
*/
private int size=20;
/**
*
* @param size 设置批次处理大大小,当达到该大小时,触发批处理
*/
public AbstractBatchRowHandler(int size) {
if(size>0){
this.size=size;
list=new ArrayList<T>(size);
}else{
list=new ArrayList<T>(size);
}
}
@Override
public void handleRow(Object obj) {
list.add((T)obj);
if(list.size()>=size){
handBatch();
list=new ArrayList<T>(size);
}
}
@Override
public void handLast() {
handBatch();
}
/**
* 获取批次数据
* @return
*/
protected List<T> getBatchDate(){
return list;
}
使用 实现handBatch()方法即可
class ProGetBatchRowHander extends AbstractBatchRowHandler<Proget> {
public ProGetBatchRowHander(int size) {
super(size);
}
@Override
public void handBatch() {
List<Proget> list=getBatchDate();
//业务实现
}
}
调用
ProGetBatchRowHander hander=new ProGetBatchRowHander(1000);
最后要记得调用hander.handLast();
分享到:
相关推荐
- **RowHandler接口**:通过实现`RowHandler`接口来自定义结果集处理逻辑。 #### 事务 - **什么是事务**:事务是一系列操作的集合,要么全部成功,要么全部失败。 - **事务的四大属性ACID** - **原子性(Atomicity...
- **批处理**:iBATIS支持批量执行SQL语句,提高了数据处理效率。 - **iBATIS优缺点总结** - **优点**: - 易于上手。 - 可控性好。 - 性能较高。 - **缺点**: - SQL语句分散不易维护。 - 需要编写较多的XML...
目 录 1. JAVA基础 3 1.1 二级 3 ...3.3.7 结合RowHandler进行查询(select) 7 3.3.8 分页查询 (select) 7 3.3.9 基于Map的批量查询 (select) 7 4. JAVA基础 8 4.1 二级 8 4.1.1 三级 8 4.1.1.1 四级 8
- **用RowHandler执行查询(select)**:通过RowHandler接口处理查询结果。 - **查询成PaginatedList(select)**:实现了分页查询的功能。 - **查询成Map(select)**:将查询结果映射到Map对象中。 #### 十一、...
scratch少儿编程逻辑思维游戏源码-米克 demo.zip
scratch少儿编程逻辑思维游戏源码-萝卜男孩拯救世界.zip
scratch少儿编程逻辑思维游戏源码-酷忍者.zip
教育科技_微信小程序_二手交易平台_大学校园二手书与物品循环利用公益系统_风华读书人校园二手交易平台_基于C2C模式的校内闲置物品交易系统_支持多校区独立运营的二手书交易平台_包含
全新UI彩虹外链网盘系统源码前后端美化模板整站 模版文件.zip
maoxig_nonebot-plugin-ai-timetable_32152_1745865455265
少儿编程scratch项目源代码文件案例素材-足球顶尖高手.zip
少儿编程scratch项目源代码文件案例素材-作战基地.zip
少儿编程scratch项目源代码文件案例素材-云端之上 1-4名玩家.zip
scratch少儿编程逻辑思维游戏源码-魔幻之塔.zip
scratch少儿编程逻辑思维游戏源码-楼层酷跑.zip
scratch少儿编程逻辑思维游戏源码-圈.zip
少儿编程scratch项目源代码文件案例素材-纸片马里奥自定义战役.zip
少儿编程scratch项目源代码文件案例素材-自由下落.zip
少儿编程scratch项目源代码文件案例素材-阻击蜈蚣.zip
健康监测与疾病预防_脉搏波分析_六轴加速度传感器_生理参数融合_STC12硬件采集_Android数据处理_SpringBoot后端_MySQL数据库_MatlabPython实验