有时候我们在使用事务循环保存多个对象时,可能会出现在提交事务后发现只保存了最后一个对象
例如
public void saveSystemDDL(SystemDDLPojo systemDDLPojo) {
String keywordname = systemDDLPojo.getKeywordname();
String[] ite = systemDDLPojo.getItemname();
String typeflag = systemDDLPojo.getTypeflag();
if (typeflag != null && typeflag.equals("add")) {
for (int i = 0; i < ite.length; i++) {
systemDDLPojo.setDdlName(ite[i]);
systemDDLPojo.setKeyword(keywordname);
systemDDLPojo.setDdlCode(i + 1);
// System.out.println(systemDDLPojo.getDdlName());
// System.out.println(systemDDLPojo.getDdlCode());
this.elecSystemDDLDaoImpl.saveObject(systemDDLPojo);
}
}
这段代码执行后貌似几个对象的属性值都获取到了,可是却只保存了最后一个对象,这是因为每次循环都是使用的同一个对象,所以到最后就只会保存最后一个对象
这时,只需要将SystemDDLPojo systemDDL = new SystemDDLPojo();放到循环体的里面,保证每一次循环都是一个新的对象
public void saveSystemDDL(SystemDDLPojo systemDDLPojo) {
String keywordname = systemDDLPojo.getKeywordname();
String[] ite = systemDDLPojo.getItemname();
String typeflag = systemDDLPojo.getTypeflag();
if (typeflag != null && typeflag.equals("add")) {
for (int i = 0; i < ite.length; i++) {
SystemDDLPojo systemDDL = new SystemDDLPojo();
systemDDL.setDdlName(ite[i]);
systemDDL.setKeyword(keywordname);
systemDDL.setDdlCode(i + 1);
// System.out.println(systemDDL.getDdlName());
// System.out.println(systemDDL.getDdlCode());
this.elecSystemDDLDaoImpl.saveObject(systemDDL);
}
}
这样就解决了
循环保存的对象在事物提交后发现只保存了一个对象,布布扣,bubuko.com