mybatis原理学习笔记

mybatis的执行原理:

通常一个Mapper接口对应一个xml文件,Mapper接口中的方法名对应xml中的标签id,而xml中的每一个标签都会被解析为MapperStatement对象。通过xml中定义的namespace属性,可以和接口方法的执行路径相对应。而这个路径应该具有唯一性,所以Mapper接口中的方法不能被重载。Mapper接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Mapper接口生成代理对象,代理对象会拦截接口方法,转而执行MapperStatement所代表的sql语句,然后将执行结果返回。

mybatis的分页原理:

Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内容分页,而非物理分页。

mybatis-pagehelper插件的实现原理:

使用mybatis提供的插件接口,实现自定义插件,在插件内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。