我有一个resultSet,其中包含从查询中获取的数据,在此之后,我希望打印所有捕获的数据,而不使用while循环,下面是我的示例代码
@Autowired
private OrderRepository orderRepository;
String msAccDB = "jdbc:ucanaccess://" + datafile.mdb;
Connection conn = DriverManager.getConnection(msAccDB);
Statement orders = conn.createStatement();
ResultSet result = orders
.executeQuery("SELECT [ORDERID], [ORDERDATE], [QUANTIRY], [PAYMENT] FROM [ORDERS]");
while (result.next()) {
Order order = new Order();
order.setOrderId(result.getString("ORDERID"));
order.setOrderDate(result.getString("ORDERDATE"));
order.setQuantity(result.getString("QUANTIRY"));
order.setPayment(result.getString("PAYMENT"));
orderRepository.save(order);
}
result.close();
orders.close();
使用while循环需要很长时间才能完成,因为正在读取的mdb文件很大,大约为1GB,如果您有任何帮助,我们将不胜感激。
1条答案
按热度按时间nzkunb0c1#
不要使用JPA进行这种处理,它只会增加您似乎并不需要的开销。
请改用
JdbcTemplate
来执行插入。使用批处理功能来减少数据库往返的开销。通过索引访问
ResultSet
值,而不是通过名称。一些驱动程序似乎对名称相当低效。当您使用
JdbcTemplate
时,您可能还想对原始查询使用JdbcTemplate
。这使得代码更简单,并修复了异常处理。