Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn / Cập nhật hàng loạt MyBatis cho Oracle

Câu trả lời được chấp nhận không phải là cách được khuyến nghị để xử lý các hoạt động hàng loạt. Nó không hiển thị các câu lệnh hàng loạt thực sự vì chế độ thực thi hàng loạt sẽ được sử dụng khi mở một phiên. Xem bài đăng này, trong đó một người đóng góp mã đã đề xuất rằng cách thích hợp để cập nhật hàng loạt (hoặc chèn) là mở một phiên ở chế độ hàng loạt và liên tục gọi cập nhật (hoặc chèn) cho một bản ghi.

Đây là những gì phù hợp với tôi:

public void updateRecords(final List<GisObject> objectsToUpdate) {
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    try {
        final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class);
        for (final GisObject gisObject : objectsToUpdate) {
            mapper.updateRecord(gisObject);
        }
        sqlSession.commit();
    } finally {
        sqlSession.close();
    }
}

Không sử dụng foreach trong cập nhật / chèn của bạn và đảm bảo rằng nó chỉ cập nhật / chèn một bản ghi duy nhất. Tôi đã gặp phải lỗi tiên tri không thể giải quyết bằng cách thực hiện nó theo câu trả lời được chấp nhận (ký tự không hợp lệ, câu lệnh chưa kết thúc, v.v.). Như bài đăng được liên kết chỉ ra, cập nhật (hoặc chèn) được hiển thị trong câu trả lời được chấp nhận thực sự chỉ là một câu lệnh sql khổng lồ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm tất cả các trường trong tất cả các bảng để có giá trị cụ thể (Oracle)

  2. Làm cách nào để tạo cơ sở dữ liệu mới sau khi cài đặt ngay cơ sở dữ liệu oracle 11g Express Edition?

  3. Cách tính toán sự khác biệt giữa hai ngày trong PostgreSQL / Oracle

  4. Tôi cần thoát những gì khi gửi truy vấn?

  5. Các công cụ dành cho nhà phát triển để truy cập trực tiếp vào cơ sở dữ liệu