没别的,直接整。
什么Mybatis四大对象,不管了。
引入Jar包:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
下面在Mybatis的配置文件中注册:
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
Attention:plugins元素的位置在TypeAliases之后。关于Mybatis中元素的顺序,自行404。
然后,当你想用分页查询数据时,直接在查询之前调用:
Page page = PageHelper.startPage(int 第几页,int 一页显示多少个)。
注意:对于每个想要分页查询的语句前,都要执行一次。也就是说,它只对一条查询语句起作用。
要获取详细的有关页码、页数、总条数之类的信息,使用PageInfo
PageInfo pageInfo = page.toPageInfo();
其中常用的属性是:
pageNum:当前页
pageSize:每页条数
size:当前页码的条数
total:总条数
pages:总页数
prePage:前一页页码
nextPage后一页页码
isFirstPage:是否是首页
isLastPage:是否是尾页
实例:
不写了
MyBatis核心对象
ParameterHandler:处理SQL的参数对象
ResultSetHandler:处理SQL的返回结果集
StatementHandler:数据库的处理对象,用于执行SQL语句
Executor:Mybatis的执行器,用于增删改查操作。
四大对象,是mybatis底层功能的实际执行者。当我们需要对Mybatis的一些操作进行修改时,可以修改四大核心对象来实现。
插件:也就是拦截器。利用JDK的动态代理,可以实现对四大核心对象的拦截以及增强。通俗的说是:使用插件对核心对象进行包裹,进行功能的增强。
自定义Mybatis拦截器,需要实现Interceptor接口,并实现其三个抽象方法:
package pers.wargon.dao.interceptor;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Invocation;
import java.util.Properties;
//标志拦截器
@intercepts({
//告诉intercept去拦截type对象的method方法,参数为xxxx.class
@Signature(type=xxx.class,method="xxxx",args=xxxx.class)
})
public class PageInterceptor implements Interceptor {
@Override
//拦截目标对象的目标方法
public Object intercept(Invocation invocation) throws Throwable {
Object object = invocation.proceed();
return null;
}
@Override
//plugin用来包装目标对象,为对象创建代理
//Object o 就是拦截器拦截的对象
public Object plugin(Object o) {
//包装目标对象o,用当前类作为代理类
return Plugin.wrap(o,this);
}
@Override
//用来传递插件参数。在配置文件配置插件时,可以配置参数,在此处获取
public void setProperties(Properties properties) {
}
}