`
xvm03
  • 浏览: 143955 次
  • 来自: ...
社区版块
存档分类
最新评论

ibatis入门

阅读更多

ibatis持久化框架使用2007-08-25 10:26最近很火,所以我也下了一个用了一下。看看它与hibernate的异同。

在执行大量数据库操作时,我们的SQL语句必然要得到优化后才能使用。

而Hibernate给我们的条件实在是太局限,在做大型数据操作时候,难免会觉得不是那么快。

ibatis给我的感觉就是短而精悍,可以让我们自定义过程,相当一个半自动的框架。给于程序

员的控制性比较大,使用起来也是比较方便。


-------------------------------------------------------------------------------------

ibatis最主要需要3个jar包:

                        ibatis-sqlmap-2.jar            主要包

                        ibatis-common-2.jar           提供的命令

                        ibatis-dao-2.jar                   简单DAO

 

我的工程结构是这样:

 


首先要编写一个读取配置文件的类:

我编写了一个IbatisFactory的工厂类,用于读取sqlmap-config.xml里面的配置

--------------------------------

package org.ibatis.model.config;

import java.io.IOException;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class IbatisFactory {
    /*使用单例模式,让整个程序中只有一个实例*/
    private final static SqlMapClient sqlMapper;

    /*其中最主要就是获得SqlMapClient这个类,他相当hibernate中的session用来完成数据库操作*/
    public static SqlMapClient newInstence(){
        return sqlMapper;
    }
   
    /*使用静态块来加载读取配置文件的过程*/
    static {
        try {
              java.io.Reader reader = Resources.getResourceAsReader("org/ibatis/model/config/sqlmap-config.xml");
              sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
              reader.close();
            } catch (IOException e) {
              // Fail fast.
                System.out.println("读出XML文件时异常");
              throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
            }
    }
}

-------------------------------------

sqlmap-config.xml 的配置文件


-------------------------------------


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<!--
        cacheModelsEnabled - 高速缓冲存储器
        enhancementEnabled - 字节码增强
        lazyLoadingEnabled - 延迟加载
        maxRequests - 最大请求
        maxSessions - 最大会话
        maxTransactions - 最大事务数
        useStatementNamespaces - 使用statement命名空间
    -->
<sqlMapConfig>
    <settings cacheModelsEnabled="true" enhancementEnabled="true"
        lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
        maxTransactions="5" useStatementNamespaces="false" />

    <transactionManager type="JDBC">
        <dataSource type="SIMPLE">
            <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
            <property name="JDBC.ConnectionURL"
                value="jdbc:mysql://127.0.0.1:3306/ibatis?characterEncoding=utf-8" />
            <property name="JDBC.Username" value="root" />
            <property name="JDBC.Password" value="" />
            <property name="JDBC.DefaultAutoCommit" value="false" />
            <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 ibatis" />
            <property name="Pool.PingEnabled" value="false" />
            <property name="Pool.PingConnectionsOlderThan" value="1" />
            <property name="Pool.PingConnectionsNotUsedFor" value="1" />
        </dataSource>
    </transactionManager>
    <!-- 指定POJO的配置文件的存放的地址 -->
    <sqlMap resource="org/ibatis/model/entity/User.xml" />
</sqlMapConfig>

----------------------------------------

然后,我们通过数据库的表设计一个POJO:User.java

package org.ibatis.model.entity;

/**
* iBatis - User.java ----------------------------------------------
*
* @version 0.1 2007-8-24
* @author banseon ---------------------------------------------- 说明:
*         实体Bean 数据库映射表为T_USER
*/
public class User implements Entity {
   private long id;
   private String username;
   private String address;

   public String getAddress() {
       return address;
   }

   public void setAddress(String address) {
       this.address = address;
   }

   public long getId() {
       return id;
   }

   public void setId(long id) {
       this.id = id;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   @Override
   public String toString() {
       String str = "Username:" + username + "\n";
       str += "Address:" + address;
       return str;
   }
}
--------------------------------------
上面只是一个普通的POJO,最主要还是下面的配置文件User.xml文件

--------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="User">

   <!-- 为了简化这里将类在配置文件中指定一个别名,方便调用 -->
    <typeAlias alias="User" type="org.ibatis.model.entity.User"/>
   
    <resultMap id="UserResult" class="User">
        <result property="username" column="USERNAME"/>
        <result property="address" column="ADDRESS"/>
    </resultMap>
   
    <select id="getUserbyUsername" resultMap="UserResult">
        select * from T_USER WHERE USERNAME = #username#
    </select>

<!--
        这里提供了增删改查4种配置,里面都有id,这里的id主要起到一个唯一性。
        给DAO中的方法调用,你可以编写多个insert配置,但id都要不同。
        parameterClass 指的是调用的参数类 后面的名称是这个类的别名
        每个操作的中间都带有SQL语句,其中代"#"的表示是参数。系统自动填充。
   -->

<!-- Insert example, using the User parameter class -->
<insert id="insert" parameterClass="User">
    insert into T_USER (ID,USERNAME,ADDRESS)
    values (#id#,#username#,#address#)
</insert>

    <!-- Update example, using the User parameter class -->
    <update id="update" parameterClass="User">
    update T_USER set
      USERNAME = #username#,
      ADDRESS = #address#
    where
      ID = #id#
    </update>
   
    <!-- Delete example, using an integer as the parameter class -->
    <delete id="delete" parameterClass="int">
    delete from T_USER where ID = #id#
    </delete>

</sqlMap>
-------------------------------------

最后我们来编写一个DAO来测试一下:

-------------------------------------
package org.ibatis.model.dao;

import java.sql.SQLException;

import org.ibatis.model.config.IbatisFactory;

import org.ibatis.model.entity.User;

import com.ibatis.sqlmap.client.SqlMapClient;


public class UserDAO {
   
    //通过工厂得到sqlMapClient实例
    protected SqlMapClient sqlMapClient = IbatisFactory.newInstence();


    /**
    * 插入方法
    */
    public void insert(User entity) {
        try {
            sqlMapClient.startTransaction();//开始事务
            sqlMapClient.insert("insert", entity);//这里很总要,第一个参数是指定调用的哪个插入方法
            sqlMapClient.commitTransaction();//提交事务
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                sqlMapClient.endTransaction();//关闭事务
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }//插入方法结束
}

public static void main(String[] args) {
        UserDAO _dao = new UserDAO();
        org.ibatis.model.entity.User user = new org.ibatis.model.entity.User();
        user.setId(0);
        user.setAddress("123123123123");
        user.setUsername("banseon123");
        _dao.insert(user);
    }
--------------------------------------

最后直接插入到数据库当中。
 

  • 大小: 29 KB
分享到:
评论

相关推荐

    Ibatis入门例子,Ibatis教程

    在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    Ibatis 入门经典 实例

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

    iBatis入门(三)

    **iBatis入门(三)** 在本篇中,我们将深入探讨iBatis,这是一个流行的开源持久层框架,它允许开发者将SQL语句与Java代码分离,提供更灵活的数据库操作方式。iBatis的核心是SQL Maps,这些映射文件包含了SQL语句以及...

    ibatis 入门

    标题 "ibatis 入门" 暗示我们要探讨的是关于使用和理解开源持久层框架 iBATIS 的基础知识。iBATIS 是一个优秀的 Java 应用框架,它将 SQL 查询与 Java 代码分离,提供了更灵活的数据访问方式。这篇博客(博文链接已...

    最简单的iBatis入门例子

    本教程将带你一步步走进iBatis的世界,通过一个最简单的入门例子来了解其基本概念和使用方法。 一、iBatis简介 iBatis(现在称为MyBatis)是由Apache软件基金会维护的一个开源项目,它解决了Java应用程序直接操作...

    ibatis入门教程_ibatis入门教程_源码

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。

    ibatis入门到精通详细讲解

    **Ibatis 入门到精通详细讲解** Ibatis 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,提供了一个灵活的映射框架,从而减轻了开发人员在数据库操作上的工作负担。这篇详细讲解将带你从入门到...

    ibatis入门与ibatis迭代的用法

    **ibatis入门** iBatis,一款轻量级的Java持久层框架,是MyBatis的前身,由美国华人开发团队开发。它提供了一个SQL、Java和XML的映射框架,将SQL语句与Java代码分离,使得开发者可以更加灵活地处理数据库操作,避免...

    ibatis ibatis入门教程

    【标题】:Ibatis Ibatis入门教程 【描述】:Ibatis是一款优秀的持久层框架,它简化了Java应用与数据库之间的交互,通过提供一个映射SQL的XML或注解方式,使得开发人员能够将精力集中在业务逻辑上,而不是繁琐的...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...

    ibatis 入门的例子

    这个压缩包中的"ibatisJavaTest"项目应该是一个简单的Ibatis入门示例,可能包含了配置文件、映射文件、测试类等。通过分析和运行这个项目,你可以直观地了解Ibatis如何与数据库交互,以及如何编写和使用Mapper接口。...

    iBATIS入门实例测试

    **iBATIS入门实例测试** iBATIS是一个优秀的开源持久层框架,它简化了Java应用程序与数据库之间的交互,使得开发者可以专注于SQL语句本身,而无需处理大量的JDBC代码。本教程将通过一个简单的实例来介绍如何使用...

    ibatis入门学习经典案例

    【标题】"ibatis入门学习经典案例"是一个针对初学者设计的教程,旨在帮助他们快速理解和掌握MyBatis(原名iBatis)这一流行的Java持久层框架。这个案例提供了完整的部署和运行环境,使学习过程更为直观和便捷。 ...

    ibatis入门实例(全代码)

    在这个"ibatis入门实例(全代码)"中,我们将探讨如何通过 Ibatis 实现对数据库的操作,包括数据库的初始化、SQL 映射文件的编写以及 Java 代码的集成。 首先,让我们了解数据库的准备工作。在实例中,提供了数据库...

    ibatis入门实例,很方便,导入即用

    **Ibatis 入门实例详解** Ibatis 是一个优秀的、开源的 Java 数据访问框架,它简化了数据库操作,使得开发者可以更加专注于 SQL 而不需处理底层的 JDBC 编码。Ibatis 提供了一个映射框架,允许将 SQL 查询与 Java ...

    iBatis入门Helloworld

    iBatis,现已被更名为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过这个简单的"iBatis入门Helloworld"项目,你可以快速掌握iBatis的基础操作,并为进一步学习和应用打下坚实基础。

Global site tag (gtag.js) - Google Analytics