文档章节

ibatis学习笔记(一)

baifq
 baifq
发布于 2016/07/06 20:16
字数 919
阅读 17
收藏 0

接的新项目中使用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$与#

© 著作权归作者所有

共有 人打赏支持
baifq
粉丝 0
博文 9
码字总数 1170
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

i
itxx2016
推荐国内最流行的ibatis、mybatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
iBatis2学习笔记:基本原理和配置

iBatis2学习笔记:基本原理和配置 iBatis2是一个轻量级的数据持久化框架,它是一个半自动化的ORMapping工具,数据库的操作依赖程序员自己书写的SQL,因此可以最大限度发挥JDBC的性能。据测试...

亚特兰缇斯
2015/03/04
0
2
从 iBatis 到 MyBatis,你准备好了吗?

对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不...

被风遗忘
2012/03/30
0
0
iBATIS框架理论学习篇(公司内部培训文档)

iBATIS框架学习[20070409] 作者:kimsoft 自己整理的对iBATIS框架的一些简单理论知识,有助于进一步了解和深入学习iBATIS框架,错误或不当之处,在所难免。 1、什么是iBATIS 1.1作者 Clinto...

晨曦之光
2012/03/09
0
0
iBATIS 3 for Java Released (BETA 1)

A month ago iBATIS turned 7 years old, and while we're celebrating a little late, today we're happy to announce iBATIS 3 for Java. iBATIS 3 is a complete rewrite from the ground......

晨曦之光
2012/03/09
0
1
写在iBATIS3 GA之前-Dynamic SQL

相比于iBATIS的大量难懂的动态标签,iBATIS3可谓巨大的进步。 作者也称其为“one of the most powerful features of iBATIS” 我用一句标签概括就是:“抄袭”JSTL和OGNL。毕加索同学说过,好...

晨曦之光
2012/03/09
0
1

没有更多内容

加载失败,请刷新页面

加载更多

MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
2
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
6
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
12
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部