Mybatis工具SqlHelper - 获取Mybatis方法的Sql

原创 2014年10月13日 14:27:46

如果你想在代码中获取Mybatis方法的sql,你可以使用本工具。


SqlHelper地址:SqlHelper.java


这个工具不需要你实际去执行Mybatis的查询方法就能得到sql。


程序提供的可以调用的方法如下:


方法主要分两大类,使用命名空间namespace调用或者使用Mapper接口方式调用。


两种方法的主要区别在于使用Mapper接口时会根据Mapper接口的参数构造参数Map,最后还是使用的getNamespaceSql方法。


使用该方法必须提供SqlSession或者Mapper接口的实例。  


下面是测试方法:  

@Test
public void test() {
    SqlSession sqlSession = DynamicHelper.getSqlSession();
    try {
        CountryMapper countryMapper = sqlSession.getMapper(CountryMapper.class);

        System.out.println(
                SqlHelper.getNamespaceSql(
                        sqlSession,
                        "com.github.pagehelper.mapper.CountryMapper.selectIf2ListAndOrder"));

        System.out.println(
                SqlHelper.getMapperSql(
                        countryMapper,
                        "selectIf2ListAndOrder",
                        Arrays.asList(1, 2)));

        System.out.println(
                SqlHelper.getMapperSql(
                        sqlSession,
                        "com.github.pagehelper.mapper.CountryMapper.selectAll"));

        System.out.println(
                SqlHelper.getMapperSql(
                        sqlSession,
                        "com.github.pagehelper.mapper.CountryMapper.selectIf2ListAndOrder",
                        Arrays.asList(1, 2),
                        Arrays.asList(3, 4),
                        "id"));
    } finally {
        sqlSession.close();
    }
}

输出结果:  

select * from country
select * from country
     WHERE id not in
        (
          1
        ,
          2
        )
select * from country
select * from country
     WHERE id not in
        (
          1
        ,
          2
        )
      
      
        and id not in
        (
          3
        ,
          4
        ) 
     
      order by id



如果你仅仅想获取sql,你可以使用该工具。


版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com 举报

相关文章推荐

MyBatis 返回动态结果类型插件

MyBatis 返回动态结果类型插件说明虽然写了这么一个插件,但是个人建议尽可能不去这么用,如果这个插件真正能方便你,使用起来也没任何问题。关于插件的一些个人修改建议,在插件的注释中有说明。插件用途:...

MyBatis 执行动态 SQL

应老婆要求写的这篇博客。大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中: ${_parameter} 你可以如下调用:sq...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

JAVA - Sql解析工具jsqlparser简单使用

jsqlparser地址:https://github.com/JSQLParser/JSqlParser SqlParser.jar:http://search.maven...

MyBatis显示SQL语句

将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试:  ### 设置Logger输出级别和输出目的地 ### log4j.rootLogg...

Mybatis工具类

import java.io.IOException; import java.io.Reader; import java.sql.Connection; import org.apache.iba...

使用mybatis框架完成数据库中的CRUD(使用工具类)

mybatis框架的核心配置文件:创建一个名为resource的资源文件夹 ,用来存放配置文件 mybatis-config.xml的文件: <!--

MyBatis直接执行SQL的工具SqlMapper

可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决。能否通过MyBatis实现这样的功能呢?为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2.0...

在mybatis执行SQL语句之前进行拦击处理

比较适用于在分页时候进行拦截。对分页的SQL语句通过封装处理,处理成不同的分页sql。 实用性比较强。 import java.sql.Connection; import java.sql.Pre...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)