ibatis学习笔记(一)
博客专区 > baifq 的博客 > 博客详情
ibatis学习笔记(一)
baifq 发表于1年前
ibatis学习笔记(一)
  • 发表于 1年前
  • 阅读 16
  • 收藏 0
  • 点赞 0
  • 评论 1
摘要: ibatis 背景 动态标签 '#与$'

接的新项目中使用ibatis,下面记录下学习的过程 说明:资料来自网络,感谢前辈的积累,水平有限,欢迎指正~

#1.背景 ##iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。 官网为:http://www.mybatis.org/ ##iBATIS运行原理简介 iBATIS 运行的主要执行步骤见下图(参考资料2)

iBATIS运行原理

#2.动态标签 动态sql生成是Ibatis的一大优势.这里简单介绍IBATIS的常用动态标签. > 动态标签的作用是动态构建SQL语句,根据不同的一元或二元运算条件构建复杂的SQL语句,这功能非常好,这样就可以把写的BO层的SQL语句构造移值到SQL MAP 文件里。(参考资料3)

##二元条件元素: 二元条件元素将一个属性值和一个静态值或另一个属性值比较,如果条件为“真”,元素体的内容将被包括在查询SQL语句中。

<isNotEqual> | 比较属性值和静态值或另一个属性值是否不相等。 ###二元条件元素的属性:

  • prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)property - 被比较的属性(必选)
  •          compareProperty - 另一个用于和前者比较的属性(必选或选择compareValue)
    
  •      compareValue - 用于比较的值(必选或选择compareProperty)
    

##一元条件元素 一元条件元素检查属性的状态是否符合特定的条件。 <isNull> | 检查属性是否为null。 ###一元条件元素的属性:

  • prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
  •       property - 被比较的属性(必选)
    

#3.小例子 > 下面的例子中,<dynamic>元素划分出SQL语句的动态部分。动态部分可以包含任意多的条件标签元素,条件标签决定是否在语句中包含其中的SQL代码。所有的条件标签元素将根据传给动态查询Statement的参数对象的情况来工作。<dynamic>元素和条件元素都有“prepend”属性,它是动态SQL代码的一部分,在必要情况下,可以被父元素的“prepend”属性覆盖。上面的例子中,prepend属性“where”将覆盖第一个为“真”的条件元素。这对于确保生成正确的SQL语句是有必要的。例如,在第一个为“真”的条件元素中,“AND”是不需要的,事实上,加上它肯定会出错。以下小节讨论不同的条件元素,包括二元条件元素,一元条件元素和其他动态元素。(参考资料3)

<statement id="dynamicGetAccountList" resultMap="account-result" >   
      select * from ACCOUNT   
     <dynamic prepend="WHERE">  
              <isNotNull prepend="AND" property="firstName">   
                    (ACC_FIRST_NAME = #firstName#   
              <isNotNull prepend="OR" property="lastName">   
                        ACC_LAST_NAME = #lastName#     
              </isNotNull>   
                  )   
           </isNotNull>  
            <isNotNull prepend="AND" property="emailAddress">   
                    ACC_EMAIL like #emailAddress#   
             </isNotNull>  
             <isGreaterThan prepend="AND" property="id" compareValue="0">   
                     ACC_ID = #id#   
             </isGreaterThan>  
     </dynamic>  
     order by ACC_LAST_NAME  
</statement>  

#4.$与# 我们在使用iBATIS时会经常用到#和$这两个符号。#与$区别说通俗一点就是(参考资料4) > $中间的变量就是直接替换成值的 > #会根据变量的类型来进行替换 > 比如articleTitle的类型是string, 值是"标题"的时候 > $articleTitle$ = 标题 > #articleTitle# = '标题'

#参考资料: 1.iBatis简单入门教程

2.深入分析 iBATIS 框架之系统架构与映射原理

3.iBATIS动态标签

4.iBATIS$与#

共有 人打赏支持
粉丝 0
博文 7
码字总数 1170
评论 (1)
itxx2016
推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
×
baifq
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: