Oracle
 sql >> база данни >  >> RDS >> Oracle

MyBatis RowBounds не ограничава резултатите от заявката

Mybatis оставя много неща на SQL driver който се използва и изглежда точното поведение околоRowBounds е един от тях.

Вижте http://mybatis.github.io/mybatis-3/java-api.html, особено секцията, която казва:

Различните драйвери са в състояние да постигнат различни нива на ефективност в това отношение. За най-добра производителност използвайте типове набори от резултати SCROLL_SENSITIVE или SCROLL_INSENSITIVE (с други думи:notFORWARD_ONLY).

По подразбиране очевидно е UNSET , но можете да опитате да използвате SCROLL_SENSITIVE като ResultSetType атрибут в select маркирайте и вижте дали това помага. Вижте http://mybatis.github.io/mybatis-3/sqlmap-xml.html за повече информация по въпроса.

Ако това не работи, винаги можете да заобиколите проблема, като се откажете от използването на RowBounds и имплементирайте SettingsBean клас (или подобен), който select маркерът ще приеме като parameterType , и който съдържа полета за offset и limit (или може би rowStart и rowEnd има повече смисъл за Oracle , а след това можете да ги зададете по време на изпълнение според нуждите и да ги интерполирате динамично в SQL в момента на select се изпълнява.

Макар и малко повече код, вие можете да контролирате поведението точно както искате чрез чист динамичен SQL. Използвах подход като този с Mybatis и Postgres и работи добре.

Така че бихте внедрили своя SettingsBean клас с тези полета и техните getters и setters, и вашия select тогава изявлението може да изглежда нещо като:

<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. Вземете само дата без час в Oracle

  2. Как мога да експортирам съдържанието на таблица на Oracle във файл?

  3. как да направя пул на връзки в java?

  4. Сравнението на датата на Oracle е нарушено поради DST

  5. Индекс на дялове на Oracle