一个
SQL Map XML
映射文件可以包含任意多个
Mapped Statement, Parameter Map
和
Result Map.
按照它们之间的逻辑关系
,
为您的应用合理地组织
Mapped Statement, Parameter Map
和
Result Map.
一
typeAlias
节点
<typeAlias>
节点让您为一个通常较长的、全限定类名指定一个较短的别名
.
<typeAlias alias=”shortname”
type=”com.long.class.path.Class”/>
例如:
<typeAlias alias="user" type="com.ibatis.db.User"/>
二
Mapped Statements
SQL Map
的核心概念是
Mapped Statement.
否
Mapped Statement
可以使用任意的
SQL
语句
,
并拥有
Parameter Map(
输入
)
和
Result Map(
输出
).
如果是简单情况
, Mapped Statement
可以使用
JAVA
类来作为
Parameter
和
Result. Mapped Statement
也可以使用缓存模型
,
在内存中缓存常用的数据
. Mapped Statement
的结构如下所示
:
<statement id =”statementName”
[parameterClass=”some.class.Name”]
[resultclass=”some.class.Name”]
[parameterMap=”nameOfParameterMap”]
[resultMap=”nameOfResultMap”]
[cacheModel=”nameOfCache”]
>
Select * from t_user where id =[?|#propertyName#]
order by [$simpleDynamic$]
</statement>
在上面的表达式中
,
括号
[]
里的部分是可选的属性
,
并具在某些情况下只有特定的组合才是合法的
.
1)Statements节点
<statement>
节点是个通用声明,可以用于任何类型的
SQL
语句。通常,使用具体的
statement
类型是个好主意。具体
statement
类型提供了更直观的
XML DTD
,并拥有某些<statement>节点没有的特性.下表总结了statement类型及其属性和特性:
Statement
类型
|
属性
|
子元素
|
方法
|
<statement>
|
id parameterClass resultClass parameterMap resultMap cacheModel xmlResultName
|
所有的动态元素
|
insert update delete
所有的查询方法
|
<insert>
|
id parameterClass parameterMap
|
所有的动态元素
<selectKey>
|
insert
update
delete
|
<update>
|
id
parameterClass parameterMap
|
所有的动态元素
|
Insert
Update
delete
|
<delete>
|
id parameterClass resultClass parameterMap resultMap cacheModel
|
所有的动态元素
|
所有的查询方法
|
<select>
|
id parameterClass resultClass parameterMap resultMap cacheModel
|
所有的动态元素
|
所有的查询方法
|
<procedure>
|
id parameterClass resultClass parameterMap resultMap xmlResultName
|
所有的动态元素
|
insert update delete
所有的查询方法
|
2)Sql
语句
SQL
显然是
Mapped Statement
中最重要的部分
,
可以使用对于数据库和
JDBC DRIVER
合法的任意
SQL
语句
.
只要在
JDBC DRIVER
支持
,
可能使用任意的函数
,
甚至是多条语句
.
因为
SQL
语句是嵌在
XML
文档中的
,
因此有些特殊的字符不能直接使用
,
例如大于号和小于号
(<>).
幸运的是
,
解决的办法很简单
,
只需将包含特殊字符的
SQL
语句放在
XML
的
CDATA
区里面就可以了
.
例如
:
<statement id = "getUserArrayById" parameterClass="int"
resultClass="user">
<![CDATA[
SELECT * FROM T_USER WHERE id > #value#
group by id
]]>
</statement>
在
DAO
里
实现如下:
public List<User> findUserArrayById (Integer userId) throws Exception {
init();
List<User> list = sqlMap.queryForList("getUserArrayById", userId);
return list;
}
3)
自动生成主键
很多数据库支持自动生成主键的数据类型
.
不地这通常
(
并不总是
)
是个私有的特性
.SQL MAP
通过
<insert>
的子节点
<selectKey>
来支持自动生成的键值
.
它同时支持预生成
(
如
Oracle )
和后生成两种类型
(
如
MS-SQL server,
My sql
).
下面是几个例子
.
要实现自动生成主键有两个部分的内容:
1.
建表时,将
id
定义为主键并且加上
”
auto_increment”
设置为自动增加
.
例如
:
create table ibatis_db.t_user(id int(6)
PRIMARY KEY
auto_increment
not null,
name varchar(15) not null, sex int(1) not null);
2
.
User.xml
文件中
将
<insert id="insertUser" parameterClass="user">
INSERT INTO t_user(id,name,sex) VALUES(#id#,#name#,#sex#)
</insert>
修改为:
<!-- Oracle SEQUENCE -->
<insert id="insertUser-ORACLE" parameterClass="user">
<selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
]]>
</selectKey>
<![CDATA[
INSERT INTO t_user(id,name,sex)VALUES(#id#,#name#,#sex#)
]]>
</insert>
4)
存储过程
SQL MAP
通过
<procedure>
节点支持存储过程
.
下面的例子说明如何使用具有输出参数的存储过程
.
<parameterMap id="swapParameters" class="map">
<parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
<parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
</parameterMap>
<procedure id="swapEmailAddresses" parameterMap="swapParameters">
{call swap_email_address(?,?)}
</procedure>
5)<statement>
的子节点的属性
1.parameterClass
<statement id="statementName" parameterClass="user">
INSERT INTO t_user VALUES(#id#,#name#,#sex#)
</statement>
2.parameterMap
<parameterMap id ="insert-user-param" class="user">
<parameter property="id" />
<parameter property="name" />
<parameter property="sex" />
</parameterMap>
<statement id = "insertUser" parameterMap="insert-user-param">
INSERT INTO T_USER (id,name, sex) VALUES (?,?,?)
</statement>
3.resultClass
<statement id="getUser" parameterClass="String" resultClass="user">
SELECT id,
name,
sex
FROM t_user
WHERE name =#value#
</statement>
4.resultMap
<resultMap id="get-user-result" class="user">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
</resultMap>
<statement id ="getUserList" resultMap="get-user-result">
select * from t_user
</statement>
5.cacheModel
cacheModel
的属性值等于指定的
cacheModel
元素的
name
属性值
.
属性
cacheModel
定义查询
mapped statement
的缓存
.
每一个查询
mapped statement
可以使用不同或相同的
<cacheModel id="user-cache" type="LRU">
<flushInterval hours="24"/>
<flushOnExecute statement="insertUser"/>
<flushOnExecute statement="updateUser"/>
<flushOnExecute statement="deleteUser"/>
<property name="size" value="1000"/>
</cacheModel>
<statement id ="getUserList" cacheModel="user-cache">
SELECT * FROM t_user
</statement>
上面的例子中
,
每
24
小时刷新一次
,
或当更新的操作发生时刷新
.
6.xmlResultName
当直接把查询结果映射成
XML document
时
,
属性
xmlReesultName
的值等于
XML document
根节点的名称
.
例如
:
<select id="getUserById" parameterClass="int" resultClass="xml" xmlResultName="user">
SELECT id ,
name ,
sex
FROM t_user
WHERE id =#value#
</select>
调用如下
:
String str = (String) sqlMap.queryForObject("getUserById", id);
上面的查询结果将产生一个
XML document,
结构如下
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><user><id>1</id><name>user001</name><sex>0</sex></user>
分享到:
相关推荐
SQL Map XML映射文件 Mapped Statements Statement的类型 SQL 语句 自动生成的主键 存储过程 parameterClass parameterMap Inline Parameter简介 resultClass resultMap cacheModel xmlResultName Parameter Map 和 ...
SQL Map XML映射文件..............................................................................................................17 Mapped Statements......................................................
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
iBATIS是以SQL为中心的持久化层...iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。 iBATIS使用xml文件来映射这些输入以及输出。
SQL Map 使用简单的 XML 配置文件将 Java Bean 映射成 SQL 语句,对比其他的数据库持续层和 ORM 框架(如 JDO 的实现, Hibernate 等), SQL Map 最大的优点在于它简单易学。要使用 SQL Map,只要熟悉Java Bean, ...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
地图引擎映射引擎是一种在运行时将XML文档映射到域对象的引擎。 我已经为设计和开发了该引擎,该引擎需要处理服务提供商提供的许多XML文档。 编写代码以将这些XML文档转换为域对象是一项令人烦恼且容易出错的任务,...
MyBatis 动态 SQL 是一种在 MyBatis 映射文件中使用条件语句来生成动态 SQL 语句的技术。它可以根据不同的条件生成不同的 SQL 语句,从而实现灵活的查询和操作。 在 MyBatis 中,可以使用 `<if>`、`<choose>`、`...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...
本Java商城与Vue后台管理系统基于SpringBoot和Uniapp开发,包含902个文件,包括Java源代码、JavaScript脚本、PNG图片、JPG图片、Vue组件、XML配置文件、SVG图形、JSON配置文件、MAP映射文件、WXSS样式表。...
- Map映射文件:4个,用于MyBatis的SQL映射; - JavaScript脚本:4个,实现了页面的动态交互; - JSP页面:3个,构成了用户界面; - Markdown文件:1个,可能包含项目说明或使用指南; - SQL脚本:1个,用于初始化...
本书是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发...A.2.4 SQL映射文件 267 A.3 到哪里去查找更多的信息 269
MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开...
REST软件架构之所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不管你的文件是图片、文件Word还是视频文件,也不管你的文件是txt文件格式、xml文件格式还是其它文本文件格式。它利用支持HTTP...