Mybatis分頁問題

2021-09-20 03:21:02 字數 2140 閱讀 5460

@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外掛程式,首先是下面這一串註...