OracleDialect.java 764 B

123456789101112131415161718192021222324252627282930313233
  1. package com.edu.mybatis.dialect;
  2. public class OracleDialect extends Dialect
  3. {
  4. public String getLimitString(String sql, int offset, int limit)
  5. {
  6. sql = sql.trim();
  7. boolean isForUpdate = false;
  8. if (sql.toLowerCase().endsWith(" FOR UPDATE")) {
  9. sql = sql.substring(0, sql.length() - 11);
  10. isForUpdate = true;
  11. }
  12. StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);
  13. pagingSelect.append("SELECT * FROM ( SELECT ROW_.*, ROWNUM ROWNUM_ FROM ( ");
  14. pagingSelect.append(sql);
  15. pagingSelect.append(" ) ROW_ ) WHERE ROWNUM_ > " + offset + " AND ROWNUM_ <= " + (offset + limit));
  16. if (isForUpdate) {
  17. pagingSelect.append(" FOR UPDATE");
  18. }
  19. return pagingSelect.toString();
  20. }
  21. public String addLog(String sql)
  22. {
  23. return null;
  24. }
  25. }