MyBatis分页插件的原理

MyBatis分页插件的原理,第1张

在MyBatis内部定义了一个拦截器接口

所有的插件都要实现该接口,来,我们看看这个接口的定义

public interface Interceptor {

Object intercept(Invocation invocation) throws Throwable

Object plugin(Object target)

void setProperties(Properties properties)

}

那么其中一个关键的方法就是intercept,从而实现拦截

分页插件的原理就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内,拦截待执行的SQL,然后根据设置的dialect(方言),和设置的分页参数,重写SQL ,生成带有分页语句的SQL,执行重写后的SQL,从而实现分页

所以原理还是基于拦截器

中间步骤自行设置

MySQL驱动版本根据自己安装的MySQL选择

我把AppTest改成了MybatisTest,不该也无妨;

其中Student类暂时只设置四个字段:

mapper接口暂时为空

在resources目录下新建File命名为db.peoperties,配置如下内容:

提示:以上配置适用于MySQL8.X版本,5.X版本按照如下配置:

1、transactionManager:事务管理器;

type 事务管理类型:

JDBC(JdbcTransactionFactory);

MANAGED(ManagedTransactionFactory)

自定义事务管理器:实现TransactionFactory接口.type指定为全类名

2、dataSource:数据源

type :数据源类型

UNPOOLED(UnpooledDataSourceFactory);POOLED(PooledDataSourceFactory);

JNDI(JndiDataSourceFactory)

自定义数据源:实现DataSourceFactory接口,type是全类名

<mapper>:注册一个sql映射文件

1、注册映射文件

resource:引用类路径下的sql映射文件

mybatis/StudentMapperpper.xml

url:引用网路路径或者磁盘路径下的sql映射文件

file:///var/mappers/AuthorMapper.xml

2、注册接口

class:引用(注册)接口,

① 有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;

② 没有sql映射文件,所有的sql都是利用注解写在接口上

推荐:

比较重要的,复杂的Dao接口我们来写sql映射文件

不重要,简单的Dao接口为了开发快速可以使用注解;

批量注册

需要在资源路径下(resources)建立和dao一样的文件目录来存放想xml映射文件,如:com.example.StudentMapperpper.xml

StudentMapper

在resources的mybatis目录下新建文件夹mapper,新建xml文件StudentMapper.xml

namespace :名称空间指定为接口的全类名

id :唯一标识

resultType :返回值类型

#{id} :从传递过来的参数中取出id值

resources目录(MajorMapper.xml暂时不用创建)如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7877570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存