`

Java:iBatis简单入门

 
阅读更多
简介:

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&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 ibatis入门教程

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

    J2EE核心:iBatis_DAO入门与进阶.doc

    【J2EE核心:iBatis_DAO入门与进阶】 DAO(Data Access Object)模式在J2EE应用中扮演着关键角色,它提供了一种将业务逻辑与数据访问操作解耦的方式。DAO模式的核心思想是创建一个接口,该接口定义了所有与数据源...

    Ibatis 简单入门实例

    Ibatis 是一个优秀的Java持久层框架,它提供了一种简单且灵活的方式来映射数据库操作,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据访问层。在这个简单的入门实例中,我们将深入理解Ibatis的基本概念...

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

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

    IBatis3 入门开发

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

    ibatis入门

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

    ibatis 入门

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

    关于ibatis学习入门的小实例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,将数据库操作与业务逻辑解耦,使得开发人员能够编写出更简洁、更...希望这个入门教程能帮助你快速上手Ibatis,为后续的Java开发打下坚实基础。

    ibatisDemo 入门源码

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

    Ibatis 入门小例子

    这篇博客将通过一个简单的入门示例,帮助初学者了解如何使用 Ibatis。 【知识点详解】: 1. **Ibatis 概述**:Ibatis 是一款由 MyBatis 团队开发的持久层框架,它简化了 JDBC 的繁琐代码,将 SQL 语句与 Java 代码...

    Ibatis 入门经典 实例

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

    ibatis视频教程.rar

    1. Ibatis入门:介绍Ibatis的基本概念、架构和安装步骤,引导学习者快速上手。 2. 配置详解:讲解如何创建和配置SqlMapConfig.xml文件,以及如何在项目中引入Ibatis。 3. 数据源配置:介绍如何配置数据源,如JNDI...

    最简单的iBatis入门例子

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

    Ibatis入门例子,Ibatis教程

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

    ibatis资料整理.zip

    【标签】:Ibatis、整理、ZIP、入门、Java 【知识点详解】: 1. **Ibatis简介**:Ibatis是一个基于Java的持久层框架,它简化了数据库操作,通过XML或注解方式配置SQL和映射结果,实现了SQL与Java代码的分离,避免...

    ibatis入门与ibatis迭代的用法

    在iBatis入门时,首先需要了解的是其核心概念:SqlMapConfig.xml配置文件、SQL映射文件(.xml)和Java接口或POJO(Plain Old Java Object)。SqlMapConfig.xml是全局配置文件,包含了数据源、事务管理器等信息。SQL...

    ibatis开发手册及入门教程

    ### iBATIS SQL Maps 入门教程知识点梳理 #### 一、iBATIS SQL Maps 概述 - **定义**:iBATIS SQL Maps(现称为 MyBatis)是一种用于Java的优秀持久层框架,它简化了SQL语句与Java代码间的耦合问题,使得开发者...

    iBatis快速入门教程中文版

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

Global site tag (gtag.js) - Google Analytics