数据库操作过程中经常会遇到需要大批量操作数据的情况,使用不同的方式会占用不同的时间,下面是我在 OrmLite 中的一些耗时记录
- 使用 callBatchTasks 加载数据
qfQbsCellDao.callBatchTasks(new Callable<Object>() { | |
@Override | |
public Object call() throws Exception { | |
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) { | |
TblQFQbsCell cellData = new TblQFQbsCell(); | |
cellData.setCellId(cellItem.getId()); | |
cellData.setCellCode(cellItem.getCode()); | |
cellData.setCellName(cellItem.getName()); | |
cellData.setCellTypeId(cellItem.getCellTypeId()); | |
cellData.setPartId(cellItem.getPartQBSId()); | |
cellData.setContractId(cellItem.getContractId()); | |
cellData.setModifyTime(cellItem.getLastModTime()); | |
cellData.setState(cellItem.getState()); | |
cellData.setJsonData(gson.toJson(cellItem)); | |
qfQbsCellDao | |
.createOrUpdate(cellData); | |
} | |
return null; | |
} | |
}) |

共 7373ms
- 直接 createOrUpdate
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) { | |
TblQFQbsCell cellData = new TblQFQbsCell(); | |
cellData.setCellId(cellItem.getId()); | |
cellData.setCellCode(cellItem.getCode()); | |
cellData.setCellName(cellItem.getName()); | |
cellData.setCellTypeId(cellItem.getCellTypeId()); | |
cellData.setPartId(cellItem.getPartQBSId()); | |
cellData.setContractId(cellItem.getContractId()); | |
cellData.setModifyTime(cellItem.getLastModTime()); | |
cellData.setState(cellItem.getState()); | |
cellData.setJsonData(gson.toJson(cellItem)); | |
qfQbsCellDao | |
.createOrUpdate(cellData); | |
} |

共 29319ms
- 使用 AndroidDatabaseConnection 一次提交事务
// ORMLite 的数据连接封装类 | |
AndroidDatabaseConnection adc = new AndroidDatabaseConnection(baseDBHelper.getWritableDatabase(),true); | |
qfQbsCellDao.setAutoCommit(adc,false); | |
// 存储点名称为 create_claxx | |
Savepoint sp = adc.setSavePoint("Create_Update_Cell"); | |
for (DataAdjustmentSyncCellQBSInfos cellItem : cellQBSInfos) { | |
TblQFQbsCell cellData = new TblQFQbsCell(); | |
cellData.setCellId(cellItem.getId()); | |
cellData.setCellCode(cellItem.getCode()); | |
cellData.setCellName(cellItem.getName()); | |
cellData.setCellTypeId(cellItem.getCellTypeId()); | |
cellData.setPartId(cellItem.getPartQBSId()); | |
cellData.setContractId(cellItem.getContractId()); | |
cellData.setModifyTime(cellItem.getLastModTime()); | |
cellData.setState(cellItem.getState()); | |
cellData.setJsonData(gson.toJson(cellItem)); | |
qfQbsCellDao | |
.createOrUpdate(cellData); | |
} | |
adc.commit(sp); |

共 7574ms