有一业务场景, 需要初始化所有员工本月的考勤台账. 基本流程是删掉原来的数据 -- >然后重新插入--> 插入月统计表数据 当时场景900员工, 一个月算30天, 一次初始化要插入2.7W数据.如果dao层框架insert. 要差不多40s. 所以用jdbc进行批量操作
public void initMonth(){
deleteOld(); //删除原来的数据
final String sql = "insert into AttendanceUserDay(id,userId,date,remark) " +
" values(?,?,?,?)";
Session session = this.sqlDao.getHibernateTemplate().getSessionFactory().openSession();
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
System.out.println(connection.getAutoCommit());
PreparedStatement ps = connection.prepareStatement(sql);
for(int i = 0; i < newObjList.size() ; i++ ){
AttendanceUserDay obj = newObjList.get(i);
ps.setString(1, obj.getId());
ps.setString(2, obj.getUserId());
ps.setDate(4, new j