文档库 最新最全的文档下载
当前位置:文档库 › ibaties简介

ibaties简介

学习笔记iBatis入门

一,iBatis简介

iBatis是一种数据库持续层的ORM框架。使用简单的XML配置文件将Java Bean映射成PreparedStatement的输入参数和ResultSet结果集。

在不是很复杂的情况下,我们甚至可以使用HashMap而不是Java Bean来映射

PreparedStatement的输入参数和ResultSet结果集,从而节省开发时间与成本。

或者,我们可以使用一些辅助工具来帮助我们通过XML配置生成对应的Java Bean.二,iBatis工作原理,流程

iBatis使用简单的XML描述文件将Java Bean,Map实现和基本数据类

型的包装类(String,Integer等)映射成JDBC的PreparedStatement的输

入参数和ResultSet结果集。具体工作流程如下:

1.在sqlMapConfig的XML配置文件中进行数据库连接的配置,XML 配置文件名称任意,比如sql-map-config.xml

2.

3.在sqlMap的XML配置文件中进行SQL文的配置,文件名称任意,比如Person1.xml

4.通过SqlMapClientBuilder生成具体的操作sqlMap配置文件中SQL文的IBAT

IS对象SqlMapClient

5.SqlMapClient对象提供函数,函数的参数对应替换sqlMap配置文件中的

id,parameter等等属性,完成SQL文的执行。具体参照iBatis的API

iBatis的工作重点在于配置文件的做成上,尤其sqlMap配置文件的做成是我们需要

重点学习的。

三,SqlMapConfig.xml

配置例子如下,各个标签的说明参考官方文档。比较容易理解,这里不做整理

以上,主要注意DB连接情报的配置方法,采用了Java的标准Properties文件。

然后在XML中引用properties文件中的定义。

四,SqlMap.xml总体印象

较复杂的例子:

五,Statement语法,类型,及其属性和特点

1.

2.Statement类型,属性,特点

六,关于映射时输入值的匹配问题

1.类SqlMapClient如何从SqlMap的配置文件中找到对应的SQL文

通过类函数的参数statementName与配置文件中statement配置的id相匹配

2.bean中的数据如何映射给SQL文中对应的输入参数

a.通过参数变量名称与bean中对应属性名称相匹配

b.通过参数变量的出现顺序相匹配

3.map中的数据如何映射给SQL文中对应的输入参数

a.通过参数变量名称与map中对应key相匹配

4.基本数据类型的数据如何映射给SQL文中对应的输入参数

基本数据类型与参数1对1,没啥匹配的问题。不过官方的开发指南中强调参数要写成#value#这种写法,原因不明。

七,关于映射时返回值的匹配问题

1.查询结果如何映射给bean中的对应属性

a.通过查询结果的字段名称与bean中对应属性名称相匹配

b.指定查询结果的字段名称与bean中对应属性名称的映射关系

以上,数据类型通过反射与对应的属性类型自动匹配,极少数时候可能需要通过

resultMap的javaType属性进行设定,参考后面关于Result Map外部形式中各

个参数的说明

2.查询结果如何设定给Map

a.通过查询结果的字段名称与map中对应key相匹配

b.指定查询结果的字段名称与bean中对应属性名称的映射关系

与bean基本相同,参考使用bean作为返回结果的写法

3.查询结果如何映射给基本数据类型

只能指定一个返回值,名字可以随便,一般采用value,val等

八,

九,

十,

1.关于复杂类型属性的例子

2.关于复杂类型级和属性的例子

3.组合键值或多个复杂参数属性

十一,

十二,

1.二元条件元素

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

二元条件元素的属性:

prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

property -被比较的属性(必选)

compareProperty -另一个用于和前者比较的属性(必选或选择compareValue)compareValue -用于比较的值(必选或选择compareProperty)

2.一元条件元素

一元条件元素检查属性的状态是否符合特定的条件。

一元条件元素的属性:

prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

property -被比较的属性(必选)

3.其他元素

Parameter Present:这些元素检查参数对象是否存在。

Parameter Present的属性:

prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

4.Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。Iterate的属性:

prepend -可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

property -类型为java.util.List的用于遍历的元素(必选)

open -整个遍历内容体开始的字符串,用于定义括号(可选)

close -整个遍历内容体结束的字符串,用于定义括号(可选)

conjunction -每次遍历内容之间的字符串,用于定义AND或OR(可选)

一,注意事项

1.关于特殊字符

因为SQL语句是嵌在XML文档中的,因此有些特殊的字符不能直接使用,例如大于号和小于号(<>)。幸运的是,解决的办法很简单,只需将包含特殊字符的SQL语句放在XML的CDATA区里面就可以了。例

2.关于多个SqlMap.xml中id冲突问题

问题描述:

当sql-map-config中引用多个sqlmap.xml,多个sqlmap.xml中存在相同的

statementname的时候,ibatis如何判断当前我准备使用哪一个sqlmap.xml中的

statementname对应的sql语句

解决方法:

在SqlMapConfig.xml中的settings标签中存在一个属性

useStatementNamespaces当这个设定为true的时候,那么iBatis

通过SqlMap.xml的namespace.id来查找对应的sql文id,从而避

免这个问题。

二,其他

1.

2.

十五,Sample

1.java类,生成iBatis数据库操作对象

2.配置文件:略

相关文档
相关文档 最新文档