package org.quickbundle.third.mybatis.dialect;
/**
*
*/
public class OracleDialect implements Dialect {
public String getLimitString(String sql, int offset, int limit) {
sql = sql.trim();
boolean isForUpdate = false;
if (sql.toLowerCase().endsWith(" for update")) {
sql = sql.substring(0, sql.length() - 11);
isForUpdate = true;
}
StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);
pagingSelect.append("select * from(select row_.*, rownum rownum_ from(");
pagingSelect.append(sql);
pagingSelect.append(")row_)where rownum_>"+offset+" and rownum_<="+(offset + limit));
if (isForUpdate) {
pagingSelect.append(" for update");
}
return pagingSelect.toString();
}
}