文档章节

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

简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。通过对本文的学习,读者基本能够了解 MyBatis 有哪些方面的改进,并能够顺利使...

IBMdW
2011/06/24
1K
2
iBATIS 3.0 GA (Candidate) 发布

官网上写着 GA 后面又跟着一个 Candidate ,不知何意? iBATIS 3.0 GA (Candidate) 发布了,这个版本经过了1年多,10个beta版本的测试。 iBATIS一词来源于“internet”和“abatis”的组合,是...

zhuzhangsuo
2010/04/19
2.6K
5
从 iBatis 到 MyBatis,你准备好了吗?

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

被风遗忘
2012/03/30
0
0
iBatis for Java 2.3.4 发布

iBatis修正了2.3.3的几个BUG后,正式版2.3.4终于出来。这个版本的改进包括: Bug [IBATIS-244] - CLONE -configured type handler not used in insert [IBATIS-512] - specifying custom bo......

oschina
2008/09/21
3K
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitMQ 在spring 的使用

一、准备工作 maven依赖 <dependency>  <groupId>com.rabbitmq</groupId>  <artifactId>amqp-client</artifactId>  <version>4.0.2</version></dependency> <dependency......

狼王黄师傅
昨天
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
6
0
day26:shell题

1、 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。 如果其生产商为AuthenticAMD,就显示其为AMD公司; 如果其生产商为GenuineIntel,就显示其为Intel公司; 否则,...

芬野de博客
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部