import org.hibernate.Session;
import org.hibernate.jdbc.Work;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void write(){
log.info("Batch Save Begin.");
Session session = (Session) entityManager.getDelegate();
Work work = new Work() {
@Override
public void execute(Connection connection) throws SQLException {
PreparedStatement ps = null;
ps = connection.prepareStatement("insert into xxx values (?, ?)");
for (int i = 0; i < 1000; i++) {
ps.setString(1, "");
ps.setString(2, "");
ps.addBatch();
if (i % 500 == 0 || i == 999) {
ps.executeLargeBatch();
}
}
}
};
session.doWork(work);
log.info("Batch Save End.");
}
spring data jpa项目大批量数据库语句的一种方法
最新推荐文章于 2023-05-05 18:04:18 发布