`

ibatis 实例配置

阅读更多

以以下配置为例说明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 实例 配置 源码 依赖包 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开发指南和一个iBatis实例

    接着,"iBatis实例"部分提供了实际操作的代码示例,这是理论知识的实践应用。通过这些实例,你可以学习到如何配置数据源、如何创建Mapper接口和XML配置文件,以及如何处理查询结果。例如,你可能看到如何使用iBatis...

    ibatis 配置教程 本人通过此文档学会写ibatis实例

    根据描述中的重复信息来看,本文档旨在帮助读者掌握ibatis的配置流程,通过实践来学习如何编写ibatis实例。 #### 二、环境搭建 在正式开始ibatis的学习之前,我们需要准备以下环境: 1. **安装Eclipse 3.0.1** -...

    spring+ibatis配置实例

    "spring+ibatis配置实例"这个项目提供了一个完整的开发环境,包含所需的依赖包和标准化的项目结构,对初学者或开发者来说极具价值。 Spring是一个全面的Java应用框架,它提供了依赖注入(Dependency Injection,DI...

    Ibatis 入门经典 实例

    《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...

    ibatis学习完整实例,例子

    本教程旨在通过一个完整的实例——"ibatistest2"项目,帮助开发者深入理解和掌握Ibatis的核心功能与实践技巧。 首先,Ibatis的主要功能在于它将SQL语句与Java代码解耦,通过XML配置文件或注解的方式定义SQL映射,...

    ibatis 实例

    在本实例中,我们将深入理解 iBATIS 的核心概念,包括配置、SQL 映射文件、动态 SQL 以及如何在实际项目中集成和使用 iBATIS。 首先,让我们理解 iBATIS 的基本架构。iBATIS 包括两个主要部分:一是 SQL Maps,这是...

    ibatis 实例可运行

    7. **日志配置(log4j.properties或logback.xml)**:为了方便调试和理解程序运行过程,Ibatis实例可能包含日志配置,用于记录执行的SQL语句和执行时间等信息。 通过这个实例,新手可以学习到如何设置Ibatis的基本...

    iBatis入门实例详细代码

    在这个“iBatis入门实例详细代码”中,我们将深入探讨如何使用iBatis与MySQL数据库进行交互。 首先,我们需要在MySQL数据库中创建相应的表。这个实例可能涉及一个简单的表结构,如用户表(users),包含字段如id...

    iBATIS实例小程序

    ### iBATIS实例小程序知识点解析 #### 一、iBATIS简介 iBATIS是一个开源的持久层框架,它提供了一种将对象映射到关系型数据库中的方法,简化了Java应用程序与数据库之间的交互过程。iBATIS的核心是SQL映射文件,...

    Ibatis实例 宠物店

    【Ibatis实例 - 宠物店】 Ibatis,作为一个轻量级的持久层框架,它在Java开发中扮演着重要角色,特别是在数据访问层面。它提供了SQL映射机制,允许开发者编写灵活、可定制化的SQL语句,同时避免了传统的JDBC代码...

    Ibatis.net学习和实例~

    1. **安装与设置**:首先,你需要下载并添加Ibatis.net库到你的项目中,然后配置相应的配置文件,包括数据库连接字符串以及SQL映射文件的位置。 2. **SQL映射文件**:这是Ibatis.net的核心部分,它定义了如何将数据...

    Ibatis应用实例.docx

    《Ibatis应用实例》 iBatis是一个轻量级的持久层框架,它作为O/R Mapping解决方案,与Hibernate等其他框架相比,其最大的优势在于简洁易用。对于不需要复杂功能的项目,iBatis是理想的选择,它允许开发者自由地编写...

    spring+ibatis实例

    在这个"spring+ibatis实例"中,我们将会探讨如何将这两个框架结合使用,以实现高效的数据访问和业务逻辑处理。首先,我们需要理解 Spring 的核心概念,包括 Bean 容器和 AOP(面向切面编程),这些是整合 iBATIS 的...

    简单的iBatis 实例

    这个“简单的iBatis实例”旨在帮助初学者快速理解和掌握iBatis的基本用法。下面我们将深入探讨iBatis的核心概念、配置以及如何创建一个简单的实例。 首先,iBatis 的主要组件包括:SqlMapConfig.xml(全局配置文件...

    struts+spring+ibatis实例(完整项目)

    在这个“struts+spring+ibatis 实例(完整项目)”中,我们将深入探讨这三个框架如何协同工作,以及如何通过它们来构建一个功能完备的Web应用程序。 首先,Struts 是一个基于MVC(Model-View-Controller)设计模式的...

    ibatis配置文件信息

    为了确保ibatis正常工作,还需要编写一些初始化代码来加载配置文件并创建`SqlMapClient`实例: ```java private static SqlMapClient sqlMapClient = null; static { try { Reader reader = ...

    Ibatis实例,手把手交你入门

    【Ibatis实例,手把手教你入门】 Ibatis,一个轻量级的Java持久层框架,以其灵活、简单的特点,被广泛应用于各种项目中。本文将引导你从零开始,逐步了解并掌握Ibatis的基本用法,包括配置环境、创建数据表、编写...

    Ibatis开发实例

    ### Ibatis开发实例详解 #### 一、Ibatis简介与背景 Ibatis 是一个由 Clinton Begin 在 2001 年发起的开源项目,其名称来源于“internet”和“abatis”的组合。最初,该项目的重点是密码软件的开发,但随着时间的...

    spring与ibatis整合集成实例

    在整合 iBATIS 时,Spring 会负责创建 SqlSessionFactory 和 SqlSession 的实例,并通过配置文件或注解来注入到需要的地方。 2. **SqlSessionFactory**:这是 iBATIS 提供的工厂类,用于创建 SqlSession 对象。...

Global site tag (gtag.js) - Google Analytics