@intercepts(), @signature(type = resultsethandler.class, method = "handleresultsets", args = )})
public class pagewidget implements interceptor
while (metaobject.hasgetter("target"))
boundsql boundsql = (boundsql) metaobject.getvalue("delegate.boundsql");
string sql = boundsql.getsql();
assert.notnull(metaobject.getvalue("delegate.boundsql.parameterobject"), "parameterobject is null");
pagetool page = (pagetool) metaobject.getvalue("delegate.boundsql.parameterobject.pagetool");
boolean needcount = true;
boolean needpage = true;
if (needpage) }}
return invocation.proceed();
} else if (invocation.gettarget() instanceof resultsethandler) else
}@override
public object plugin(object target) else
}@override
public void setproperties(properties properties)
private string buildpagesql(string sql, pagetool page)
private stringbuilder buildpagesqlfordialect(string dialect, string sql, pagetool page) else
log.debug("分頁sql:{}", builder);
if(page.showsql())
return builder;
}int from = sql.indexof("from");
string countsql = "select count(*) " + sql.substring(from);
if(page.showsql())
preparedstatement statement = null;
resultset rs = null;
try
page.setpagedatacount(totalcount);
page.setpagecount(page.getpagedatacount() % page.getpagesize() == 0 ? page.getpagedatacount() / page.getpagesize() : (page.getpagedatacount() / page.getpagesize()) + 1);
} catch (sqlexception e) finally catch (sqlexception e) }}
parameterhandler.setparameters(statement);
}
這是我的分頁核心類,我通過攔截statementhandler和resultsethandler來實現分頁邏輯,前者,是動態更改sql,後者是修改返回型別。現在的問題就下面的**,有問題,不知道什麼原因,為空。
object result = invocation.proceed();
page page = new page();
page.setresult((list) result);
system.out.println(page.getresult() + "mark");
return page;
上面的**,我將查詢的結果,放到page分頁物件中,然後並列印出來,並正確顯示,但我再次列印page物件時,顯示的結果為空。不知道什麼原因,就是因為這個page為空,現在導致我的分頁返回不了資料返回的值為空。 mybatis實現分頁
邏輯分頁 1.1.業務控制層 public void selectdeptwithpage1 1.2 資料訪問層 select from t department and deptname like if where select 2.物理分頁 這種分頁是我們mysql資料庫支援的,其實也就是拼sq...
MyBatis分頁查詢
sqlsession物件的selectlist方法有個rowbounds引數,該引數可用於控制返回的記錄數量。使用 如下 資料抓取機制 是先將當前頁記錄以及前面所有記錄,以及後面一條記錄都抓取出來,然後再擷取當前頁記錄顯示。例如需要抓取顯示4 6條記錄時,實際獲取的是前6條記錄,外加第7條記錄。這種...
mybatis分頁外掛程式
其實吧,這個分頁的封裝是我從mybatis實戰上抄的,然後又重構了下 形成了自己的。現在之所以會記錄一下,主要原因是出現了質變 對foreach的支援,而解決這個問題的過程中,我感覺,應該基本上使用上沒有多少侷限行了。下面說說實際的吧。基本的設計思路,是使用mybatis外掛程式,首先是下面這一串註...