当我们写SqlMap xml的时候,经常会碰到重复的SQL片段,例如where语句或者约束条件;iBATIS提供了一个强大的标签来复用这些重复片段,简单举例,我们想检索一些字段,并且想统计它们。
通常情况下,你会这样写:
<select id="selectCount" resultClass="int">
SELECT COUNT(*) AS total
FROM items
WHERE id = 6 and groupId = 4
select>
<select id="selectOne" resultClass="Item">
SELECT id, name
FROM items
WHERE id = 6 and deleted= true
select>
为了消除重复片段,我们使用【sql】和【include】标签。【sql】标签用来包含重复片段,【include】标签用来引入片段:
<sql id="dao_where_statement">
<dynamic prepend="where">
<isNotNull prepend="and" property="id">
id = #id#
</isNotNull>
<isNotNull prepend="and">
groupId = #groupId#
</isNotNull>
<isNotNull prepend="and" property="deleted">
DELETED = #deleted#
</isNotNull>
</dynamic>
</sql>
还可以通过isNotNull判断属性条件,这样就达到了where条件查询的重用
<select id="selectCount" parameterClass="int" resultClass="int">
SELECT COUNT(*) AS total from items
<include refid="dao_where_statement"/>
<select>
注意很重要的一点,要引用的sql标签一定要定义在select上面,否则查询不到。我用的时候就遇到了这个问题。
分享到:
相关推荐
主要是关于oracle ibatis 的一些sql
ibatis2.0+sqlserver2005环境搭建
在ibatis日志信息中打印SQL语句的方法(个人总结)
iBatis最全的动态SQL语句,你需要的都有,资源在于大家共享
通过java程序查看ibatis配置文件中的sql语句(注:无法查看变量值)
08_ibatis教程_sql主键生成方式.zip 08_ibatis教程_sql主键生成方式.zip
ibatis 开发指南 和 iBATIS-SqlMaps两本图书
iBATIS-SqlMaps-2-Tutorial_cniBATIS-SqlMaps-2-Tutorial_cn.pdf.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdfiBATIS-SqlMaps-2-Tutorial_cn.pdf
[iBATIS]sql转换工具 简单哦~ 项目组自己写的哦~分享给大家了
08_ibatis教程_sql主键生成方式.rar
ibatis的dynamicSQL中,关于prepend的使用
ibatis常用的sql语句,很全的一篇文档。。。
iBATIS-SqlMaps2入门代码文档
ibatis常用sql语句,简单易懂,方便查询,初学者宝典
webwork+ibatis+sqlserver2000完整实例
08_传智播客ibatis教程_sql主键生成方式08_传智播客ibatis教程_sql主键生成方式
动态sql拼接
iBATIS-SqlMaps ibatis入门教程,教你如何做配置ibatis
iBATIS-SqlMaps,ibatis映射文件
iBATIS-SqlMaps-2_cn中文文档