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

MyBatis RowBounds không giới hạn kết quả truy vấn

Mybatis để lại nhiều thứ cho SQL driver đang được sử dụng và nó xuất hiện hành vi chính xác xung quanh RowBounds là một trong số đó.

Xem http://mybatis.github.io/mybatis-3/java-api.html, đặc biệt là phần có nội dung:

Các trình điều khiển khác nhau có thể đạt được các mức hiệu quả khác nhau về vấn đề này. Để có hiệu suất tốt nhất, hãy sử dụng loại tập hợp kết quả làSCROLL_SENSITIVE hoặc SCROLL_INSENSITIVE (nói cách khác:notFORWARD_ONLY).

Giá trị mặc định rõ ràng là UNSET , nhưng bạn có thể thử sử dụng SCROLL_SENSITIVE dưới dạng ResultSetType trong select gắn thẻ và xem nếu điều đó có ích. Xem http://mybatis.github.io/mybatis-3/sqlmap-xml.html để biết thêm thông tin về điều đó.

Nếu điều đó không hiệu quả, bạn luôn có thể khắc phục sự cố bằng cách bỏ sử dụng RowBounds và triển khai Cài đặtBean lớp (hoặc tương tự) mà select thẻ sẽ có dạng parameterType và chứa các trường cho offsetlimit (hoặc có thể là rowStartrowEnd có ý nghĩa hơn đối với Oracle và sau đó bạn có thể đặt chúng trong thời gian chạy nếu cần và nội suy động chúng vào SQL tại thời điểm select được thực thi.

Trong khi mã nhiều hơn một chút, bạn có thể kiểm soát hành vi chính xác như bạn muốn thông qua SQL động thuần túy. Tôi đã sử dụng cách tiếp cận như thế này với MybatisPostgres và nó đã hoạt động tốt.

Vì vậy, bạn sẽ triển khai Cài đặtBean của mình lớp với các trường đó và getters và setters của chúng, và select của bạn sau đó câu lệnh có thể trông giống như sau:

<select
  id="selectFoo"
  parameterType="com.foo.bar.SettingsBean">

select *
from foo
where rownum >= #{rowStart}
  and rownum < #{rowEnd}
</select>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu Oracle là gì?

  2. Thêm tham số ngày vào truy vấn oracle

  3. Oracle chèn từ select vào bảng với nhiều cột hơn

  4. Cách nhanh nhất để kiểm tra xem một số bản ghi trong một bảng cơ sở dữ liệu?

  5. Lỗi 1033 nhận được đăng nhập vào chế độ chờ