MsSQLDialect.java 774 B

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