spring-data-jpa 如何在不使用while循环的情况下读取从查询中获得的整个resultSet数据

798qvoo8  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(157)

我有一个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,如果您有任何帮助,我们将不胜感激。

nzkunb0c

nzkunb0c1#

不要使用JPA进行这种处理,它只会增加您似乎并不需要的开销。
请改用JdbcTemplate来执行插入。使用批处理功能来减少数据库往返的开销。
通过索引访问ResultSet值,而不是通过名称。一些驱动程序似乎对名称相当低效。
当您使用JdbcTemplate时,您可能还想对原始查询使用JdbcTemplate。这使得代码更简单,并修复了异常处理。

相关问题