有个项目用的seasar s2dao的框架,要加一个一次可以更新多条记录的共通机能,被叫去帮忙调查。
首先官网说明上只给了一个insertBatch的例子。
int insertBatch(Employee[] employees)
查找seasar源代码发现有这么个类,有戏!
org.seasar.dao.impl.UpdateBatchAutoStaticCommand
按部就班,在dao里加一下
int updateBatch(List<TradeRecord> list);
执行的时候报了一个异常:
org.seasar.dao.PrimaryKeyNotFoundRuntimeException: [EDAO0009]PrimaryKey not found in ...
设断点调试,发现安装updateBatch这个方法的时候做了主键存在验证,不存在的话报错。
通过分析源码知道主键是从对应的Bean里面读出来的,接下来就简单了。
在Bean里主键对应的变量上加上:@Id,执行,成功!