首页 > 其他 > 详细

mybatis源码分析——Plugin的使用以及原理

时间:2020-06-12 19:07:55      阅读:50      评论:0      收藏:0      [点我收藏+]

 

一:插件的使用

以分页插件PageHelper为例,看一下mybatis的插件如何工作

首先添加pageHelper的maven依赖:

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>

  

在mybatis-config.xml中配置插件plugins:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 引入外部资源文件
        resource:默认引入classpath路径下的资源文件
        url:引入物理路径下的资源文件(如:d:\\jdbc.properties)
     -->
    <properties resource="application.properties"></properties>
    <!-- 设置参数 -->
    <settings>
        <!--  开启驼峰匹配:完成经典的数据库命名到java属性的映射
                          相当于去掉数据中的名字的下划线,和java进行匹配
        -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!-- 配置别名 -->
    <typeAliases>
        <!-- typeAlias:用来配置别名,方便映射文件使用,type:类的全限定类名,alias:别名 -->
        <typeAlias type="com.example.mybatis.model.User" alias="User"/>
    </typeAliases>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
        <!--<plugin interceptor="com.example.mybatis.plugin.MyFirstPlugin">
            <property name="someProperty" value="100"/>
        </plugin>-->
    </plugins>
    <!-- 配置环境:可以配置多个环境,default:配置某一个环境的唯一标识,表示默认使用哪个环境 -->
    <environments default="development">
        <!-- 配置环境,id:环境的唯一标识 -->
        <environment id="development">
            <!-- 事务管理器,type:使用jdbc的事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 数据源,type:池类型的数据源 -->
            <dataSource type="POOLED">
                <!-- 配置连接信息 -->
                <property name="driver" value="${jdbc.driverClass}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 配置映射文件:用来配置sql语句和结果集类型等 -->
    <mappers>
        <mapper resource="UserMapper.xml" />
    </mappers>
</configuration>

  

在使用的上一行语句中写上PageHelper.startPage(pageNo,pageSize) 页码,每页页数

        PageHelper.startPage(3,2);
        List<User> list =  userMapper.selectUser("hello105");

  

这样就可以工作了,下面我们测试一下

技术分享图片

 

 

 

通过日志可以看到,可以实现正常的分页工作了,下面我们来研究一下它的工作原理

 

二:插件工作原理

1:插件的注册,我们在第一节分析XMLConfigBuilder解析mybatis-config.xml的时候看过解析mappers,这里重点

看一下如何解析plugins元素

技术分享图片

 

 

 看一下解析plugins元素下面的plugin元素,

技术分享图片

 

 

 最后注册到configuration中的interceptorChain中

技术分享图片

 

 

 技术分享图片

 

 

 到这里,解析mybatis-config.xml时注册插件的过程就完成了。

2:对数据库操作做增强

 

mybatis源码分析——Plugin的使用以及原理

原文:https://www.cnblogs.com/warrior4236/p/13104984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!