以以下配置为例说明Ibatis的配置:
<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.p6spy.engine.spy.P6SpyDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/sample"/>
<property name="JDBC.Username" value="user"/>
<property name="JDBC.Password" value="mypass"/>
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from XXX"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/ibatis/sample/User.xml"/>
</sqlMapConfig>
=========================
POJO示例:
public class User implements Serializable {
private Integer id;
private String name;
private Integer sex;
private Set addresses = new HashSet();
/** default constructor */
public User() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return this.sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
}
=============
映射文件
与 Hibernate 不同。因为需要人工编写SQL 代码,ibatis 的映射文件一般采用手动编写
<sqlMap namespace="User">
<typeAlias alias="user" type="com.ibatis.sample.User"/>
<select id="getUser"
parameterClass="java.lang.String"
resultClass="user">
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</select>
<update id="updateUser" parameterClass="user">
<![CDATA[
UPDATE t_user
SET
name=#name#,
sex=#sex#
WHERE id = #id#
]]>
</update>
<insert id="insertUser" parameterClass="user">
INSERT INTO t_user (
name,
sex)
VALUES (
#name#,
#sex#
)
</insert>
<delete id="deleteUser" parameterClass="java.lang.String">
delete from t_user
where id = #value#
</delete>
</sqlMap>
⑴ ID
指定了操作ID,之后我们可以在代码中通过指定操作id 来执行此节点所定
义的操作,如:
sqlMap.update("updateUser",user);
ID设定使得在一个配置文件中定义两个同名节点成为可能(两个update节点,以不同id区分)
⑵ parameterClass
指 定 了操作所需的参数类型, 此例中update 操作以
com.ibatis.sample.User 类型的对象作为参数,目标是将提供的User实例更新到数据库。
parameterClass="user"中,user为“com.ibatis.sample.User”
类的别名,别名可通过typeAlias节点指定,如示例配置文件中的:
<typeAlias alias="user" type="com.ibatis.sample.User"/>
⑶ <![CDATA[……]]>
通过<![CDATA[……]]>节点,可以避免SQL 中与XML 规范相冲突的字符对XML映射文件的合法性造成影响。
⑷ 执行更新操作的SQL,这里的SQL 即实际数据库支持的SQL 语句,将由ibatis填入参数后交给数据库执行。
⑸ SQL中所需的用户名参数,“#name#”在运行期会由传入的user对象的name属性填充。
⑹ SQL 中所需的用户性别参数“#sex#”,将在运行期由传入的user 对象的sex属性填充。
⑺ SQL中所需的条件参数“#id#”,将在运行期由传入的user对象的id属性填充。
对于这个示例,ibatis在运行期会读取id 为“updateUser”的update节点的SQL定义,并调用指定的user对象的对应getter方法获取属性值,并用此属性值,对SQL中的参数进行填充后提交数据库执行。
此例对应的应用级代码如下,其中演示了ibatis SQLMap的基本使用方法:
String resource ="com/ibatis/sample/SqlMapConfig.xml";
Reader reader;
reader = Resources.getResourceAsReader(resource);
XmlSqlMapClientBuilder xmlBuilder =new XmlSqlMapClientBuilder();
SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader);
//sqlMap系统初始化完毕,开始执行update操作
try{
sqlMap.startTransaction();
User user = new User();
user.setId(new Integer(1));
user.setName("Erica");
user.setSex(new Integer(1));
sqlMap.update("updateUser",user);
sqlMap.commitTransaction();
finally{
sqlMap.endTransaction();
}
其中,SqlMapClient是ibatis运作的核心,所有操作均通过SqlMapClient实例完成。
可以看出,对于应用层而言,程序员面对的是传统意义上的数据对象,而非JDBC中烦杂的ResultSet,这使得上层逻辑开发人员的工作量大大减轻,同时代码更加清晰简洁。
数据库操作在映射文件中加以定义,从而将数据存储逻辑从上层逻辑代码中独立出来。
而底层数据操作的SQL可配置化,使得我们可以控制最终的数据操作方式,通过SQL的优化获得最佳的数据库执行效能,这在依赖SQL自动生成的“全自动”ORM机制中是所难以实现的。
相关推荐
ibatis 实例 配置 源码 依赖包 ibatis-2.3.4.726.jar commons-logging-api.jar commons-logging-1.1.jar commons-dbcp-1.2.2.jar commons-pool.jar
接着,"iBatis实例"部分提供了实际操作的代码示例,这是理论知识的实践应用。通过这些实例,你可以学习到如何配置数据源、如何创建Mapper接口和XML配置文件,以及如何处理查询结果。例如,你可能看到如何使用iBatis...
根据描述中的重复信息来看,本文档旨在帮助读者掌握ibatis的配置流程,通过实践来学习如何编写ibatis实例。 #### 二、环境搭建 在正式开始ibatis的学习之前,我们需要准备以下环境: 1. **安装Eclipse 3.0.1** -...
"spring+ibatis配置实例"这个项目提供了一个完整的开发环境,包含所需的依赖包和标准化的项目结构,对初学者或开发者来说极具价值。 Spring是一个全面的Java应用框架,它提供了依赖注入(Dependency Injection,DI...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
本教程旨在通过一个完整的实例——"ibatistest2"项目,帮助开发者深入理解和掌握Ibatis的核心功能与实践技巧。 首先,Ibatis的主要功能在于它将SQL语句与Java代码解耦,通过XML配置文件或注解的方式定义SQL映射,...
在本实例中,我们将深入理解 iBATIS 的核心概念,包括配置、SQL 映射文件、动态 SQL 以及如何在实际项目中集成和使用 iBATIS。 首先,让我们理解 iBATIS 的基本架构。iBATIS 包括两个主要部分:一是 SQL Maps,这是...
7. **日志配置(log4j.properties或logback.xml)**:为了方便调试和理解程序运行过程,Ibatis实例可能包含日志配置,用于记录执行的SQL语句和执行时间等信息。 通过这个实例,新手可以学习到如何设置Ibatis的基本...
《Ibatis应用实例》 iBatis是一个轻量级的持久层框架,它作为O/R Mapping解决方案,与Hibernate等其他框架相比,其最大的优势在于简洁易用。对于不需要复杂功能的项目,iBatis是理想的选择,它允许开发者自由地编写...
在这个“iBatis入门实例详细代码”中,我们将深入探讨如何使用iBatis与MySQL数据库进行交互。 首先,我们需要在MySQL数据库中创建相应的表。这个实例可能涉及一个简单的表结构,如用户表(users),包含字段如id...
### iBATIS实例小程序知识点解析 #### 一、iBATIS简介 iBATIS是一个开源的持久层框架,它提供了一种将对象映射到关系型数据库中的方法,简化了Java应用程序与数据库之间的交互过程。iBATIS的核心是SQL映射文件,...
【Ibatis实例 - 宠物店】 Ibatis,作为一个轻量级的持久层框架,它在Java开发中扮演着重要角色,特别是在数据访问层面。它提供了SQL映射机制,允许开发者编写灵活、可定制化的SQL语句,同时避免了传统的JDBC代码...
1. **安装与设置**:首先,你需要下载并添加Ibatis.net库到你的项目中,然后配置相应的配置文件,包括数据库连接字符串以及SQL映射文件的位置。 2. **SQL映射文件**:这是Ibatis.net的核心部分,它定义了如何将数据...
在这个"spring+ibatis实例"中,我们将会探讨如何将这两个框架结合使用,以实现高效的数据访问和业务逻辑处理。首先,我们需要理解 Spring 的核心概念,包括 Bean 容器和 AOP(面向切面编程),这些是整合 iBATIS 的...
这个“简单的iBatis实例”旨在帮助初学者快速理解和掌握iBatis的基本用法。下面我们将深入探讨iBatis的核心概念、配置以及如何创建一个简单的实例。 首先,iBatis 的主要组件包括:SqlMapConfig.xml(全局配置文件...
在这个“struts+spring+ibatis 实例(完整项目)”中,我们将深入探讨这三个框架如何协同工作,以及如何通过它们来构建一个功能完备的Web应用程序。 首先,Struts 是一个基于MVC(Model-View-Controller)设计模式的...
为了确保ibatis正常工作,还需要编写一些初始化代码来加载配置文件并创建`SqlMapClient`实例: ```java private static SqlMapClient sqlMapClient = null; static { try { Reader reader = ...
【Ibatis实例,手把手教你入门】 Ibatis,一个轻量级的Java持久层框架,以其灵活、简单的特点,被广泛应用于各种项目中。本文将引导你从零开始,逐步了解并掌握Ibatis的基本用法,包括配置环境、创建数据表、编写...
### Ibatis开发实例详解 #### 一、Ibatis简介与背景 Ibatis 是一个由 Clinton Begin 在 2001 年发起的开源项目,其名称来源于“internet”和“abatis”的组合。最初,该项目的重点是密码软件的开发,但随着时间的...
在整合 iBATIS 时,Spring 会负责创建 SqlSessionFactory 和 SqlSession 的实例,并通过配置文件或注解来注入到需要的地方。 2. **SqlSessionFactory**:这是 iBATIS 提供的工厂类,用于创建 SqlSession 对象。...