ibatis通过重用sql

xiaoxiao2023-01-25  125

当我们写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上面,否则查询不到。我用的时候就遇到了这个问题。

相关资源:Java 面经手册·小傅哥(公众号:bugstack虫洞栈).pdf
转载请注明原文地址: https://www.6miu.com/read-4980734.html

最新回复(0)