如果数据库引发任何插入错误,推荐的插入一批记录的方法是什么? 这是我目前的代码:
PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
for (MyModel m : myModels)
Base.addBatch(ps, m.getCol1());
Base.executeBatch(ps);
ps.close();
这会插入记录,直到第一个记录失败(如果发生) 我想要插入全部或全部,然后我想要包装executeBatch():
Base.openTransaction();
Base.executeBatch(ps);
Base.commitTransaction();
如果正确,我应该在某些Base.rollbackTransaction()
中try catch
吗?
我是否还要关闭ps.close()
区块中的finally
?
谢谢!
答案 0 :(得分:0)
事务处理批处理操作与非批处理操作没有任何不同。请参阅:http://javalite.io/transactions#transacted-activejdbc-example了解典型模式。
然后你会这样做:
List<Person> myModels = new ArrayList<>();
try{
Base.openTransaction();
PreparedStatement ps = Base.startBatch("INSERT INTO table(col1) VALUES(?)");
for (Person m : myModels){
Base.addBatch(ps, m.getCol1());
}
Base.executeBatch(ps);
ps.close();
Base.commitTransaction();
}catch(Exception e){
Base.rollbackTransaction();
}
这样,如果出现异常,您的数据就完好无损