mybatis如何自定义插件?(思路简述)

解析:
MyBatis 自定义插件针对 MyBatis 四大对象(Executor,StatementHandler,ParameterHandler,ResultSetHandler)进行拦截
Executor :拦截内部执行器,它负责调用StatementHandler 操作数据库,并把结果集通过 ResultSetHandler 进行自动映射,另外它还处理了二级缓存的操作
StatementHandler :拦截 SQL 语法构建的处理,它是MyBatis 直接和数据库执行 SQL脚本的对象,另外它也实现了 MyBatis一级缓存
ParamenterHandler :拦截参数的处理
ResultSetHandler :拦截结果集的处理

mybatis分页?

1.原始sqllimit
2.RowBounds mybatis默认 内存分页 针对结果集的
3.拦截器分页 4个参数
4pagehelper插件
5.mybatisPlus分页
看这里

mybatis 的接口没有实现类

反射+动态代理
1.class.forName(namespace) 反射包装成MapperProxyFactory对象
2.SqlSessio获取Mapper接口时,通过MapperProxyFactory对象实例化MapperProxy动态代理mapper接口
3.执行Mapper接口时,动态代理反射调用mapperProxy的invoke()方法,根据接口方法找到对应的MappedStatement执行sql