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执行SQL语句之前进行拦击处理

比较适用于在分页时候进行拦截。对分页的SQL语句通过封装处理,处理成不同的分页sql。 实用性比较强。 import java.sql.Connection; import java.sql.Pre...
  • hfmbook
  • hfmbook
  • 2014年12月17日 19:41
  • 41493

mybatis 获取指定mapper id sql

sqlSessionTemplate.getConfiguration().getMappedStatement("com.ai.runner.viv.report.dao.mapper.interf...

mybatis源码学习之执行过程分析(4)——映射文件中sql的获取和sql语句的执行

mybatis源码学习及分析之执行过程分析(4)——映射文件中sql的获取和sql语句的执行在上一篇中分析了XXXMapper接口的获取,其实质上拿到的是一个MapperProxy。这一篇主要分析sq...

方便好用的 Idea mybatis 插件 MyBatisCodeHelper

给大家推荐一个 idea mybatis的插件:MyBatisCodeHelper 源码gitHub地址:https://github.com/gejun123456/MyBatisCodeHelp...
  • dalinsi
  • dalinsi
  • 2017年03月30日 11:49
  • 5622

Mybatis通用Mapper和分页pagehelper

目录(?)[-] 极其方便的使用Mybatis单表的增删改查优点如何使用 引入通用Mapper的代码配置Mapper拦截器继承通用的MapperT必须指定泛型T泛型实体类T的类型必须符合要求将继承...
  • lrcoop
  • lrcoop
  • 2015年08月14日 10:53
  • 41479

Mybatis通用Mapper

极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对...
  • isea533
  • isea533
  • 2014年11月25日 09:07
  • 154007

mybatis获取运行时最终执行SQL

废话不多说上代码,我的版本是mybatis-3.2.8package com.jujin.util;import java.util.List; import java.util.Map;import...
  • BESSINO
  • BESSINO
  • 2016年12月08日 15:52
  • 3124

应用程序获取Mybatis中配置的执行SQL

获取到Mybatis中配置的具体SQL,而且是在程序执行时已经将参数替换完之后的完整的SQL。 举个例子,sqlMap中配置了如下sql: select * from lottery_o...
  • dalinsi
  • dalinsi
  • 2016年07月15日 16:43
  • 1690

mybatis 将sql写在java代码中

第一部分:Common.xml  (mybatis sql执行文件  这里通过java传参形成sql语句) 下面包含各种传参查询和传入sql语句进行查询(注入问题在java中进行处理)添加和...

Mybatis中如何获取SqlSession

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获...
  • houhow
  • houhow
  • 2016年06月24日 15:28
  • 6662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mybatis工具SqlHelper - 获取Mybatis方法的Sql
举报原因:
原因补充:

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