ibatis3中执行SelectBuilder/SqlBuilder生成的SQL语句。

原创 2010年08月11日 23:34:00

iBatis 3中新增了SelectBuilder/SqlBuilder两个工具类,用于利用类函数的方式动态生成SQL 语句,减少拼接SQL语句时候大量的显式字符串操作,减少字符串操作可能出现的错误,提高程序的易读性。

在iBatis 3的用户指南中,列举出了若干个实例,如下是个最简单的例子,生成一个静态的SQL语句:

 

 

下面几个例子生成动态的SQL语句

 

 

通过上面的实例,我们已经可以生成SQL语句了,但是如何使用这些SQL,用户指南中并没有提及。当然,对于简单的例子,如例1中生成的静态SQL,我们完全可以以纯粹的JDBC的方式来执行。但例子2中几个方法,则必须首先将里面的变量替换掉,才能执行,因此,利用iBatis中自带的类进行变量替换则应该是最好的办法(当然我们可以用Velocity等模板工具来做这件事情,但在iBatis环境下,不是最佳的方案)。

 

iBatis3的一个缺陷就是相关的开发文档太少,要想做这件事情就必须啃源码了。

 

首先通过观察,找到了SelectBuilder/SqlBuilder同一个package下的SqlRunner类,该类封装了针对数据库操作的select,insert, update和delete的等方法,很显然这是一个SQL执行类,select默认的返回类型为Map。

 

下一步,需要寻找能替换关键字变量的相关类了,得感谢ibatis 3.0 Dynamic Sql 设计解 ...这篇文章,对Dynamic Sql相关类和类关系有了了解,才找到最终的解决方案,如下:

 

 

 

使用起来很简单:

 

如上,使用map是为了支持任意多个参数,同时利用SelectBuilder/SqlBuilder强大的SQL构建能力,我们完全可以封装一些很通用的数据库操作功能,比如通用删除功能,只需将上面的方法进行修改,将表名和包含主键变量的Map传入就可以实现了,而不需要再去XML文件写SQL。

深入浅出Mybatis-sql自动生成

本文提供了一种自动生成sql语句的方法,它针对的对象是有主键或唯一索引的单表,提供的操作有增、删、改、查4种。理解本文和本文的提供的代码需要有java注解的知识,因为本文是基于注解生成sql的。本文适...
  • hupanfeng
  • hupanfeng
  • 2013年07月13日 20:43
  • 34006

Spring JdbcTemplate实现通用的泛型dao三:构建动态sql

构建动态sql,其实说白了就是拼装sql语句,在这里我把传入的实体参数,属性有值的拼装进sql,为null的则忽略,要实现这个不用说,肯定要利用Java的反射功能,来看一个具有代表性的insert语句...
  • johnjobs
  • johnjobs
  • 2014年07月16日 16:13
  • 1637

mybatis直接执行sql语句

在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoIm...
  • binyao02123202
  • binyao02123202
  • 2013年02月06日 10:06
  • 44423

MyBatis学习-使用SqlBuilder生成SQL语句

MyBatis学习-使用SqlBuilder生成SQL语句
  • wdh314228223
  • wdh314228223
  • 2015年02月10日 15:26
  • 348

【p6spy】程序员开发利器P6spy——打印执行sql语句,mybatis、ibatis、Hibernate均可使用

一、前言      在开发的过程中,总希望方法执行完了可以看到完整是sql语句,从而判断执行的是否正确,所以就希望有一个可以打印sql语句的插件。p6spy就是一款针对数据库访问操作的动态监控框架,他...
  • kisscatforever
  • kisscatforever
  • 2017年12月12日 17:40
  • 799

iBATIS.net直接执行sql语句

在用iBatis.net与数据库打交道的过程中,发现iBatis.net拼接字符串不能直接拷贝然后在dbms里执行(获取runtime时的sql语句都是带@param1,@param2,@param3...
  • jumtre
  • jumtre
  • 2015年04月21日 00:00
  • 2332

iBatis.net使用动态sql语句

  • 2015年12月04日 10:42
  • 89KB
  • 下载

ibatis在debug时打印完整的SQL语句

1 首先在tomcat安装目录的lib包下(Tomcat6之前的版本可能是common下的lib包)加入log4j-1.2.9.jar(版本无所谓); 2 将log4j.properties文件复制...
  • ahhsxy
  • ahhsxy
  • 2011年11月21日 15:50
  • 743

ibatis常用16条SQL语句

(1) 输入参数为单个值 Xml代码   delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBef...
  • see__you__again
  • see__you__again
  • 2016年06月05日 18:00
  • 645

ibatis运行的SQL语句的输出——通过配置log4j

ibatis运行的SQL语句的输出——通过配置log4j 如下这些调试信息在生产环境是不需要的,这里讲解一下log4j的配置方式: 在log4j.propertie...
  • qq_28867949
  • qq_28867949
  • 2017年10月30日 15:13
  • 71
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ibatis3中执行SelectBuilder/SqlBuilder生成的SQL语句。
举报原因:
原因补充:

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