`
只是随手瞎打
  • 浏览: 28062 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

MyBatis 插件测试

    博客分类:
  • java
 
阅读更多
我这里只是拿了当前的sql语句,可以对它进行操作,然后可以将操作过后的sql语句反射回BoundSql。
就可以做分页或者其他功能,就不需要在映射文件写了。

通过
http://blog.csdn.net/hfmbook/article/details/41985853
这个大佬写的来学习的,写的很详细的
以下是代码

TestPlugin.java

package com.hgf.ssm.util;

import org.apache.ibatis.executor.statement.RoutingStatementHandler;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.plugin.*;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.util.Properties;

/**
 * Created by hasee on 2017/1/22.
 * 测试MyBatis插件,功能其实感觉就是过滤器
 */
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class }) })
public class TestPlugin implements Interceptor {

    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        System.out.println("intercept");
        //获取RoutingStatementHandler对象
        RoutingStatementHandler statementHandler = (RoutingStatementHandler)invocation.getTarget();

        //通过反射得到delegate的filed类
        Field field = statementHandler.getClass().getDeclaredField("delegate");
        Object value = null;
        //判断field是否需要进行java语言访问检查,参考 https://my.oschina.net/nixi0608/blog/724343
        if (field.isAccessible()) {
            value = field.get(statementHandler);
        } else {
            field.setAccessible(true);
            value = field.get(statementHandler);
            field.setAccessible(false);
        }
        StatementHandler delegate = (StatementHandler)value;
        BoundSql boundSql = delegate.getBoundSql();
        //获取当前sql语句
       String sql =  boundSql.getSql();
        System.out.println(sql);
        return  invocation.proceed();
    }

    @Override
    public Object plugin(Object o) {
        System.out.println("plugin");
        if (o instanceof StatementHandler) {
            return Plugin.wrap(o, this);
        } else {
            return o;
        }

    }

    @Override
    public void setProperties(Properties properties) {

    }
}


spring-mybatis.xml
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath*:com/hgf/ssm/dao/mapper/*.xml"></property>
        <property name="typeAliasesPackage" value="com.hgf.ssm.dao.po" />
        <property name="configLocation" value="classpath:mybatis-configuration.xml" />
    </bean>


mybatis-configuration.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">

<!-- MyBatis数据持久层配置文件 -->
<configuration>





    <!-- 插件 -->
    <plugins>
        <!-- StatementHandler插件 -->
        <plugin interceptor="com.hgf.ssm.util.TestPlugin">
            <property name="sqlid" value=".*Page" />
        </plugin>


    </plugins>

</configuration>

分享到:
评论

相关推荐

    IDEA的MyBatis插件两个

    4. 动态SQL预览:与MyBatisCodeHelper-Pro类似,MybatisX也支持动态SQL预览,但其界面更加友好,可以直接在图形界面上编辑和测试。 5. 代码生成器:MybatisX具备代码生成功能,可以一键生成Model、Mapper、Mapper ...

    Eclipse集成mybatis插件

    标题 "Eclipse集成mybatis插件" 涉及到的是在Java开发环境中,如何将MyBatis这一流行的数据持久层框架与Eclipse IDE整合,以便于提高开发效率和代码质量。MyBatis是一个轻量级的框架,它允许开发者通过SQL映射文件将...

    mybatis插件分页测试

    在"mybatis插件分页测试"中,我们将关注以下关键知识点: 1. **插件配置**:在MyBatis的配置文件(mybatis-config.xml)中,我们需要声明我们的分页插件,指定拦截的目标方法和插件类。例如,可以使用PageHelper...

    IDEA的mybatis插件

    《IDEA的Mybatis插件详解与应用》 在现代软件开发中,集成开发环境(IDE)扮演着至关重要的角色,而IntelliJ IDEA(简称IDEA)作为Java开发的主流IDE之一,提供了丰富的功能和扩展插件,极大地提升了开发效率。其中...

    Spring插件(含有mybatis插件)

    总结,Spring插件的使用极大地提升了开发效率,而Mybatis插件的融入让数据库操作更为简洁。Spring的IOC和AOP特性使得代码更加灵活,Mybatis则专注于SQL,两者结合提供了高效且易于维护的数据访问解决方案。了解并...

    MyBatis-myeclipse插件

    8. **集成测试**:在MyEclipse中,你可以利用MyBatis插件对生成的代码进行单元测试,验证数据库操作的正确性。 9. **版本控制**:在团队协作中,MyBatis插件能够很好地与其他版本控制系统如Git、SVN等集成,确保...

    mybatis的测试架包

    8. **commons-collections.jar**:Apache Commons Collections库,提供了大量的集合操作和转换工具,可以在MyBatis的映射器配置或自定义插件中使用。 9. **org.springframework.web.struts-3.0.1.RELEASE-A.jar**:...

    idea-mybatis插件包

    【标题】"idea-mybatis插件包"是一个专为IntelliJ IDEA开发的扩展工具,旨在提高开发人员在使用MyBatis框架时的工作效率。这个插件是针对IntelliJ IDEA社区版(free-idea)设计的,为开发者提供了一系列便利的功能,...

    IDEA mybatis插件 Free MyBatis Tool

    《IDEA mybatis插件 Free MyBatis Tool详解与应用》 在现代软件开发中,IntelliJ IDEA作为一款强大的Java集成开发环境(IDE),深受广大开发者喜爱。它提供了丰富的功能,帮助程序员提高效率,减少错误。而在使用...

    2018.1版本 idea- mybatis plugin插件

    《IDEA与MyBatis Plugin插件的深度解析与应用》 在当今的软件开发领域,IntelliJ IDEA(简称IDEA)以其强大的功能和友好的用户体验,深受广大Java开发者喜爱。而MyBatis作为一款优秀的持久层框架,极大地简化了...

    myeclipse 的mybatis开发插件

    在本案例中,我们关注的是"Mybatis开发插件",这是一款专门为MyEclipse设计的,用于简化MyBatis框架集成和使用的工具。 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎...

    springboot+mybatis等测试项目

    开发者可以在Mapper XML文件中编写带有LIMIT和OFFSET的SQL语句,或者使用MyBatis的PageHelper插件,它可以自动处理分页参数,简化代码,提高代码的可读性和复用性。 此外,项目中可能还包括了Spring Boot的Web相关...

    spring集成 tk.mybatis插件

    在本文中,我们将深入探讨如何在Spring 4.0框架中集成tk.mybatis插件,以实现高效、便捷的数据库操作,特别关注增删改查(CRUD)功能的简化。tk.mybatis是一个轻量级的MyBatis扩展,旨在提供更简单、更快速的开发...

    mybatis_plugin 2.92

    5. 测试用例:开发者可能提供了测试用例,以证明插件的正确性和有效性。 总的来说,MyBatis 插件能够极大地扩展框架的功能,使得开发者能够根据项目的具体需求进行定制化开发。"mybatis_plugin 2.92" 可能是一个为 ...

    mybatis_xml插件

    为了使用MyBatis_XML插件,首先需要在IDE中安装插件,然后在项目中配置MyBatis的相关依赖。在安装完成后,开发者可以立即体验到它带来的便利性。同时,为了更好地利用插件,开发者还需要熟悉MyBatis的配置和Mapper...

    Integration_2.rar(mybatis generator测试源码)

    这个"Integration_2.rar"压缩包包含的是一个使用MBG进行测试的源代码项目。下面我们将深入探讨MyBatis Generator及其在实际开发中的应用。 1. **MyBatis Generator简介** MyBatis Generator(MBG)是MyBatis框架的...

    手写Mybatis自动填充插件

    首先,我们要理解Mybatis插件的工作原理。Mybatis 提供了一种插件机制,允许我们在特定的拦截点(如:执行 SQL 前后)插入自定义的行为。这些插件是基于 Java 的动态代理实现的,通过实现 `Interceptor` 接口并重写 ...

    idea2018.1插件 MyBatis Plugins

    4. **SQL预览与执行**:插件提供了一个内置的SQL预览窗口,可以在不离开IDE的情况下查看和测试SQL语句的执行结果,有助于开发者及时发现并修正SQL错误。 5. **Mapper注释生成**:对于复杂的查询操作,插件会自动...

    mybatis-plus IDEA常用插件

    这可能是MyBatis的插件,用于扩展MyBatis的功能,例如日志插件、性能分析插件等。这些插件可以通过在MyBatis的配置文件中声明来启用。 7. IDEA常用插件的重要性: 使用IDEA的MyBatis-Plus插件,可以显著提升开发...

    idea的mybatis和console插件

    在IntelliJ IDEA中安装MyBatis插件,可以提供诸如代码提示、自动完成、Mapper XML映射文件关联等便利功能。安装方法是:通过IDEA的设置(Preferences on macOS, Settings on Windows/Linux)-&gt; Plugins -&gt; ...

Global site tag (gtag.js) - Google Analytics