文档章节

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框架理论学习篇(公司内部培训文档)

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

晨曦之光
2012/03/09
0
0
从 iBatis 到 MyBatis,你准备好了吗?

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

被风遗忘
2012/03/30
0
0
凤凰涅槃:从 iBatis 到 MyBatis.

从 iBatis 到 MyBatis,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案...

被风遗忘
2012/04/18
0
1
iBatis和Hibernate浅析

iBatis和Hibernate浅析 Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hiber...

JAVA__
2012/08/16
0
1

没有更多内容

加载失败,请刷新页面

加载更多

分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
14分钟前
1
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
22分钟前
0
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
32分钟前
15
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
58分钟前
1
0
区块链技术中的那些能商用的企业级应用

WEPOWER是一家立陶宛初创企业,旨在改变可再生电力项目的付费方式。WePower公司创始人Nick Martyniuk表示,政府统一收购价的存在推动了全球风能与太阳能市场的发展。因此,他的公司希望帮助那...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部