文档章节

ibatis学习笔记(一)

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

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

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

被风遗忘
2012/04/18
0
1
从 iBatis 到 MyBatis,你准备好了吗?

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

被风遗忘
2012/03/30
0
0
iBatis和Hibernate浅析

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

JAVA__
2012/08/16
0
1
写在iBATIS3 GA之前-Dynamic SQL

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

晨曦之光
2012/03/09
0
1
学习ibatis,希望有共同方向的朋友。

最近在学习ibatis,真是很不错的东西。 目前已经是 apache下的开源项目。 不但有for java版本,甚至有for .net ,for ruby的版本。 ibaits将sql映射成对象。和hibernate的orm不同。非常灵活,...

晨曦之光
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
iBatis SqlMap的配备总结

iBatis SqlMap的配置总结 核心提示:SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。 1、命名空间: sqlMap namespace=Account,在此空间外要引用此空间的元素...

mjZhang
2014/04/30
0
1
ibatis MyBatis区别与联系

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

为了美好的明天
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
4分钟前
0
0
TraitsUI与Mayavi实例

一:创建一个简单的TraitsUI与Mayavi实例 # -*- coding: utf-8 -*-from numpy import sqrt,sin,mgridfrom traits.api import HasTraits,Instancefrom traitsui.api import View,Item......

wangxuwei
9分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
11分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
22分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
26分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
28分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
37分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部