打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iBATIS如何复用SQL片段(翻译)

原文链接

http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I+reuse+SQL-fragments


When writing SqlMaps, you often encounter duplicate fragments of SQL,for example a FROM-clause or constraint-statement; iBATIS offers asimple yet powerful tag to reuse them. For the sake of simplicity,let‘s assume we want to get some items and we want to do a count onthem.

Normally, you would write something like this:

当我们写SqlMaps的时候,经常会碰到重复的SQL片段,例如From语句或者约束条件;iBATIS提供了一个强大的标签来复用这些重复片段,简单举例,我们想检索一些字段,并且想统计它们。

通常情况下,你会这样写:

xml 代码
  1. <select id="selectItemCount" resultClass="int">     
  2.   SELECT COUNT(*) AS total      
  3.   FROM items      
  4.   WHERE parentid = 6     
  5. select>     
  6. <select id="selectItems" resultClass="Item">     
  7.   SELECT id, name      
  8.   FROM items      
  9.   WHERE parentid = 6     
  10. select>     
  11.   

 To eliminate this duplication, we use the tags【sql】 and 【include】. The 【sql】-tag contains the fragment to reuse, the【include】-tag to include such a fragment:

为了消除重复片段,我们使用【sql】和【include】标签。【sql】标签用来包含重复片段,【include】标签用来引入片段:

 xml 代码

  1. <sql id="selectItem_fragment">     
  2.   FROM items      
  3.   WHERE parentid = 6     
  4. sql>     
  5. <select id="selectItemCount" resultClass="int">     
  6.   SELECT COUNT(*) AS total      
  7.   <include refid="selectItem_fragment"/>     
  8. select>     
  9. <select id="selectItems" resultClass="Item">     
  10.   SELECT id, name      
  11.   <include refid="selectItem_fragment"/>     
  12. select>     
  13.   

 The 【include】-tag is namespace-aware so you canrefer to fragments even when they are located in another map (however,due to the way iBATIS loads the SqlMaps, the included fragment shouldbe loaded before the including statement). 

【inclued】标签是一个命名空间可知的,所以你可以引入其他map的片段.(但是,因为iBATIS引入SqlMap的顺序,被引入的片段,要优先于欲引入的sql部分被导入)

The fragments are included and processed on query-execution so parameters can be used too:

重复片段在查询执行时被引入和执行,所以参数依然可以使用:

 xml 代码

  1. <sql id="selectItem_fragment">     
  2.   FROM items      
  3.   WHERE parentid = #value#      
  4. sql>     
  5. <select id="selectItemCount" parameterClass="int" resultClass="int">     
  6.   SELECT COUNT(*) AS total      
  7.   <include refid="selectItem_fragment"/>     
  8. select>     
  9. <select id="selectItems" parameterClass="int" resultClass="Item">     
  10.   SELECT id, name      
  11.   <include refid="selectItem_fragment"/>     
  12. select>     
  13.  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iBATIS 模糊查询LIKE (转) - 我的博客 - ITeye技术网站
Ibatis2.0使用说明(二)——配置篇(3)
ibatis的sql返回结果集
iBATIS.net常用的查询方式浅析(转)
IBatis.net ORM初体验
IBATIS SQLMap详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服