把List<Item>对象数据插入数据库,有人可能会在业务层直接遍历集合挨个注入,这样也可以实现,但消耗高,效率低,且在循环中插入数据,一旦出现错误,那么就会出现死循环的情况,比较危险。
下面,在Dao层注入:
@Override
public int batchItems(List<Item> items) {//添加订单详情
//1.sql语句:insert into item(o_id,p_id,i_count,i_num) values(?,?,?,?); 在调用batch方法是填充多条数据
//2.batch分析: 二维数组,将items-->二维数组
String sql = "insert into item(o_id,p_id,i_count,i_num) values(?,?,?,?)";
Object[][] objs = new Object[items.size()][]; //objs[0][0] objs[0][1] objs[0][2] objs[0][3]
for(int i=0;i<items.size();i++){
Item it = items.get(i); //获取下标对应的item对象
//代表二维数组中的一个一维数组 即一个对象需要注入的属性
objs[i] = new Object[]{it.getO_id(),it.getP_id(),it.getI_count(),it.getI_num()};
}
try {
int[] batch = runner.batch(sql, objs);
return batch.length; //返回执行批处理的条数
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
batch返回值是一个结果集,其长度就是受影响的数据条数
浙公网安备 33010602011771号