Mybatis实现分页的注意点
前面的话:使用拦截器给Mybatis进行分页的教程在网上有很多,这里记录的主要是我在使用的时候中间走的弯路,记录下来,也好给后面想要学习Mybatis分页拦截的小伙伴们提供点帮助。
1.拦截器获取参数,判断是否有Page类
1)使用ThreadLocal获取
//获取ThreadLocal privatestaticThreadLocalpageLocal=newThreadLocal (); privatePagegetPage(){ returnpageLocal.get(); }
2)从boundsql里面获取
BoundSqlboundSql=delegate.getBoundSql();
ObjectparameterObject=boundSql.getParameterObject();
Pagepage=this.getPage(parameterObject);
privatePagegetPage(ObjectparameterObject){
Pagepage=null;
if(parameterObjectinstanceofPage){
page=(Page)parameterObject;
}elseif(parameterObjectinstanceofMap){
for(Objectval:((Map,?>)parameterObject).values()){
if(valinstanceofPage){
page=(Page)val;
}
}
}
returnpage;
}
2.重载plugin方法
@Override
publicObjectplugin(Objecttarget){
if(targetinstanceofStatementHandler){
returnPlugin.wrap(target,this);
}else{
returntarget;
}
}
总结
以上所述是小编给大家介绍的Mybatis实现分页的注意点,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!