`
mexican
  • 浏览: 11998 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

iBatis简单入门(转载)

阅读更多

原文章地址:http://www.cppblog.com/biao/archive/2010/10/24/131051.html

 

简介: 

jar包

普通的javaBean: domain.User

与bean对应的SQL映射文件: maps/User.xml

iBatis需要的配置文件: SqlMapConfig.xml

加载iBatis配置文件SqlMapConfig.xml是相对于class loader所在目录的相对路径. 如在Web程序中,例如Tomcat下时,class loader所对应的目录是WEB-INF/classes目录. 如在普通的单机运用程序中,class loader对应的目录是编译生成class的bin目录(把src和bin分开存放时).

 

1. 需要的jar包(暂且先用下面的,可到http://www.javaeye.com/topic/26433示例中一起下载):

commons-dbcp.jar, commons-logging-api.jar, commons-logging.jar, commons-pool.jar, 

hsqldb.jar, ibatis-common-2.jar, ibatis-dao-2.jar, ibatis-sqlmap-2.jar,

mysql-connector-java-3.1.12-bin.jar

 

2. 类User:

 

package domain;

 

public class User {

    private int id;

    private String name;

 

    public User() {}

 

    public User(String name) { this(0, name); }

 

    public User(int id, String name) {

        this.id = id;

        this.name = name;

    }

 

    public int getId() { return id; }

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

    public String getName() { return name; }

    public void setName(String name) { this.name = name; }

 

    @Override

    public String toString() { return "ID: " + id + ", Name: " + name; }

}

 

 

3. User.xml映射文件:

 

<?xml version="1.0" encoding="UTF-8"?> 

 

<!DOCTYPE sqlMap PUBLIC

    "-//iBATIS.com//DTD SQL Map 2.0//EN"

    "http://www.ibatis.com/dtd/sql-map-2.dtd">

 

<sqlMap namespace="User">

    <!-- 设置本映射中的别名: 方便使用 -->

    <typeAlias alias="user" type="domain.User" />

    <typeAlias alias="string" type="java.lang.String" />

    <typeAlias alias="integer" type="java.lang.Integer" />

    

    <!-- 增删查改的Statement配置 -->

    <select id="getAllUsers" resultClass="user"><![CDATA[

        SELECT id, name FROM user ORDER BY id

    ]]></select>

    

    <select id="getUser" resultClass="user" parameterClass="integer"><![CDATA[

        SELECT id, name FROM user WHERE id=#id#

    ]]></select>

    

    <update id="updateUser" parameterClass="user"><![CDATA[

        UPDATE user SET name=#name# WHERE id=#id#

    ]]></update>

    

    <insert id="insertUser" parameterClass="user"><![CDATA[

        INSERT INTO user (name) VALUES (#name#)

    ]]></insert>

    

    <delete id="deleteUser" parameterClass="integer"><![CDATA[

        DELETE FROM user WHERE id=#id#

    ]]></delete>

</sqlMap>

 

 

4. iBatis需要的配置文件:

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig 

    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" 

    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">

 

<sqlMapConfig>

    <settings cacheModelsEnabled="true" enhancementEnabled="true"

        lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"

        maxSessions="10" maxTransactions="5" useStatementNamespaces="false" />

 

    <transactionManager type="JDBC">

        <dataSource type="SIMPLE">

            <!-- JDBC连接需要的配置 -->

            <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />

            <property name="JDBC.ConnectionURL"

                value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8" />

            <property name="JDBC.Username" value="root" />

            <property name="JDBC.Password" value="" />

            

            <!-- 连接池配置 -->

            <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 sample" />

            <property name="Pool.PingEnabled" value="false" />

            <property name="Pool.PingConnectionsOlderThan" value="1" />

            <property name="Pool.PingConnectionsNotUsedFor" value="1" />

        </dataSource>

    </transactionManager>

 

    <!-- 映射文件 -->

    <sqlMap resource="maps/User.xml" />

</sqlMapConfig>

 

 

5. 使用iBatis访问数据库:

 

package test;

 

import java.io.IOException;

import java.io.Reader;

import java.util.List;

 

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

 

import domain.User;

 

public class Test {

    public static enum Mode {

        INSERT, UPDATE, DELETE

    }

 

    public void update(Object arg, Mode mode) {

        SqlMapClient smc = null;

        

        try {

            smc = getSqlMapClient();

            smc.startTransaction();

 

            switch (mode) {

            case INSERT: smc.insert("insertUser", arg); break;

            case UPDATE: smc.update("updateUser", arg); break;

            case DELETE: smc.delete("deleteUser", arg); break;

            }

            smc.commitTransaction();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            endTransaction(smc);

        }

    }

 

    public void listUsers() {

        SqlMapClient smc = null;

 

        try {

            smc = getSqlMapClient();

            smc.startTransaction();

            List users = smc.queryForList("getAllUsers", null);

            System.out.println(users);

            smc.commitTransaction();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            endTransaction(smc);

        }

    }

 

    public User selectUser(int id) {

        User user = null;

        SqlMapClient smc = null;

 

        try {

            smc = getSqlMapClient();

            smc.startTransaction();

            user = (User) smc.queryForObject("getUser", id);

            smc.commitTransaction();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            endTransaction(smc);

        }

 

        return user;

    }

 

    // ////////////////////////////////////////////////////////////////////////

    // Don't care

    // ////////////////////////////////////////////////////////////////////////

    private SqlMapClient getSqlMapClient() throws IOException {

        // 初始化ibatis, 获得一个SqlMapClient对象

        String resource = "SqlMapConfig.xml";

        Reader reader = Resources.getResourceAsReader(resource);

        return SqlMapClientBuilder.buildSqlMapClient(reader);

    }

 

    private void endTransaction(SqlMapClient smc) {

        if (smc == null) { return; }

 

        try {

            smc.endTransaction();

        } catch (Exception e2) {

            e2.printStackTrace();

        }

    }

 

    public static void main(String[] args) {

        Test t = new Test();

        t.listUsers();

 

        User user = new User("Biao");

        user = t.selectUser(7);

        user.setName("Biao 黄河");

        t.update(user, Mode.UPDATE);

        // t.update(user, Mode.INSERT);

        // t.update(Integer.valueOf(7), Mode.DELETE);

        t.listUsers();

    }

}

分享到:
评论

相关推荐

    ibatis快速入门(仅需两天)绝对经典,值得收藏.doc

    《ibatis快速入门:两天精通,经典收藏》 在当今数据驱动的世界里,ORM(对象关系映射)框架成为连接数据库与应用层的关键桥梁。ibatis,作为一款经典的ORM工具,以其灵活的SQL语句定制能力和高效的数据处理性能,...

    Ibatis 入门经典 实例

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

    Ibatis 简单入门实例

    在这个简单的入门实例中,我们将深入理解Ibatis的基本概念和用法。 首先,我们需要了解Ibatis的核心组件:SqlSessionFactory和SqlSession。SqlSessionFactory是Ibatis的工厂类,用于创建SqlSession对象。SqlSession...

    Ibatis入门例子,Ibatis教程

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

    ibatisDemo 入门源码

    《IbatisDemo入门源码详解》 IbatisDemo是一个典型的基于Ibatis框架的入门示例,它为我们展示了如何在Java项目中使用Ibatis进行数据库操作。Ibatis,一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件...

    ibatis入门

    **Ibatis 入门教程** Ibatis 是一个优秀的 Java ORM(对象关系映射)框架,它允许程序员将数据库操作与业务逻辑分离,提供灵活的 SQL 配置和映射机制,使得开发人员能够自由地编写 SQL 而不被 ORM 的复杂性所束缚。...

    ibatis ibatis入门教程

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

    最简单的iBatis入门例子

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

    ibatis入门到精通详细讲解

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

    iBATIS入门学习

    iBATIS入门学习

    iBatis简单入门教程.

    【iBatis 简介】 iBatis(现更名为MyBatis)是一个由Apache组织维护的开源项目,它提供了一个O/R Mapping(对象关系映射)解决方案。O/R Mapping允许开发者将数据库中的表与Java对象进行映射,简化了数据库操作。...

    iBatis入门(三)

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

    iBATIS教程之快速入门浅析

    在快速入门iBATIS的过程中,首先要理解其基本概念。iBATIS通过XML配置文件来定义SQL语句与Java对象之间的映射关系。这样,开发者可以在XML中编写SQL,而在Java代码中直接操作对象,从而实现对数据库的CRUD(Create、...

    ibatis 入门

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

    iBatis简单入门实例(以Oracle为例)

    iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点...如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,这是一个ibtis的增删改查例子。

    struts2+spring+ibatis 项目 入门使用

    本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD(Create、Read、Update、Delete)操作。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的开源Web应用...

    iBatis快速入门教程中文版

    **iBatis快速入门教程中文版** iBatis 是一个优秀的开源持久层框架,它允许开发者将SQL语句与Java代码分离,使得数据库操作更加灵活和可维护。本教程将帮助初学者快速理解和掌握iBatis的核心概念和使用方法。 **一...

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

    数据库自己建一张简单的表就行了,特别说明 只适合新手入门 只有三个java文件和三个xml配置文件 非常简单 但是包含了crud操作 非常适合新手入门,因为项目经理让我熟悉一下ibatis 我就自学写了一个,希望对你有帮助

    IBatis3 入门开发

    标题"IBatis3 入门开发"指的是关于如何开始使用和理解iBATIS 3,这是一个轻量级的Java持久层框架,主要用于简化数据库操作。iBATIS 3 提供了SQL映射框架,使得开发者可以直接编写SQL语句,将数据访问逻辑与业务逻辑...

Global site tag (gtag.js) - Google Analytics