`
JavaCrazyer
  • 浏览: 3008701 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

ibatis入门实例讲解

阅读更多

之前大家上网的ibatis官方网站:http://www.ibatis.com现在已经不再存在了,已经被MyBatis所替代http://www.mybatis.org/,我现在使用了还是之前的ibatis2.3.4,所以这个例子也是针对2.3.4版本讲解的

首先呢,打开资源包,可以看到里面有一个simple_exzample的文件夹,在MyEclipse8.5中新建一个JAVA项目,将刚才的文件夹中内容复制到项目SRC下,这样的话呢,可以看到这样一个目录



 这个MyTest是我后来加上的测试实实例,当然这些代码还不足以让程序测试出结果来

 看看ibatis的SQL语句配置类MySqlMapConfig.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">

<sqlMapConfig>

  <!-- Configure a built-in transaction manager.  If you're using an 
       app server, you probably want to use its transaction manager 
       and a managed datasource -->
  <transactionManager type="JDBC" commitRequired="false">
    <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"/>
      <property name="JDBC.Username" value="root"/>
      <property name="JDBC.Password" value="root"/>
    </dataSource>
  </transactionManager>

  <!-- List the SQL Map XML files. They can be loaded from the 
       classpath, as they are here (com.domain.data...) -->
  <sqlMap resource="com/mydomain/data/Account.xml"/>
  <!-- List more here...
  <sqlMap resource="com/mydomain/data/Order.xml"/>
  <sqlMap resource="com/mydomain/data/Documents.xml"/>
  -->

</sqlMapConfig>

 

这里我修改了下数据源为jdbc形式的,使用的是MySQL数据库,所以要添加数据库驱动包,还有ibatis核心包,在看看数据库表该怎么建立,这得查看下Account.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="Account">

  <!-- Use type aliases to avoid typing the full classname every time. -->
  <typeAlias alias="Account" type="com.mydomain.domain.Account"/>

  <!-- Result maps describe the mapping between the columns returned
       from a query, and the class properties.  A result map isn't
       necessary if the columns (or aliases) match to the properties 
       exactly. -->
  <resultMap id="AccountResult" class="Account">
    <result property="id" column="ACC_ID"/>
    <result property="firstName" column="ACC_FIRST_NAME"/>
    <result property="lastName" column="ACC_LAST_NAME"/>
    <result property="emailAddress" column="ACC_EMAIL"/>
  </resultMap>

  <!-- Select with no parameters using the result map for Account class. -->
  <select id="selectAllAccounts" resultMap="AccountResult">
    select * from ACCOUNT
  </select>

  <!-- A simpler select example without the result map.  Note the 
       aliases to match the properties of the target result class. -->
  <select id="selectAccountById" parameterClass="int" resultClass="Account">
    select
      ACC_ID as id,
      ACC_FIRST_NAME as firstName,
      ACC_LAST_NAME as lastName,
      ACC_EMAIL as emailAddress
    from ACCOUNT
    where ACC_ID = #id#
  </select>
   
  <!-- Insert example, using the Account parameter class -->
  <insert id="insertAccount" parameterClass="Account">
    insert into ACCOUNT (
      ACC_FIRST_NAME,
      ACC_LAST_NAME,
      ACC_EMAIL
    )values (
      #firstName#, #lastName#, #emailAddress#
    )
  </insert>

  <!-- Update example, using the Account parameter class -->
  <update id="updateAccount" parameterClass="Account">
    update ACCOUNT set
      ACC_FIRST_NAME = #firstName#,
      ACC_LAST_NAME = #lastName#,
      ACC_EMAIL = #emailAddress#
    where
      ACC_ID = #id#
  </update>

  <!-- Delete example, using an integer as the parameter class -->
  <delete id="deleteAccountById" parameterClass="int">
    delete from ACCOUNT where ACC_ID = #id#
  </delete>

</sqlMap>

 上面的<ResultMap>标签中有指定每个Account属性对应的数据库的列名,所以就新建数据库了

 这样数据建立完成后,我们就可以测试了,这回就用到了SimpleExample.java类了

package com.mydomain.data;

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

import java.io.Reader;
import java.io.IOException;
import java.util.List;
import java.sql.SQLException;

/**
 * This is not a best practices class.  It's just an example
 * to give you an idea of how iBATIS works.  For a more complete
 * example, see JPetStore 5.0 at http://www.ibatis.com.
 */
public class SimpleExample {

  /**
   * SqlMapClient instances are thread safe, so you only need one.
   * In this case, we'll use a static singleton.  So sue me.  ;-)
   */
  private static SqlMapClient sqlMapper;

  /**
   * It's not a good idea to put code that can fail in a class initializer,
   * but for sake of argument, here's how you configure an SQL Map.
   */
  static {
    try {
      Reader reader = Resources.getResourceAsReader("com/mydomain/data/MySqlMapConfig.xml");
      sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
      reader.close(); 
    } catch (IOException e) {
      // Fail fast.
      throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
    }
  }

  public static List selectAllAccounts () throws SQLException {
    return sqlMapper.queryForList("selectAllAccounts");
  }

  public static Account selectAccountById  (int id) throws SQLException {
    return (Account) sqlMapper.queryForObject("selectAccountById", id);
  }

  public static void insertAccount (Account account) throws SQLException {
    sqlMapper.insert("insertAccount", account);
  }

  public static void updateAccount (Account account) throws SQLException {
    sqlMapper.update("updateAccount", account);
  }

  public static void deleteAccount (int id) throws SQLException {
    sqlMapper.delete("deleteAccountById", id);
  }

}

  像上面的增删改查中用到的代替SQL语句的映射KEY,也是可以加上相应的XML文件的配置名称的,如: return sqlMapper.queryForList("Account.selectAllAccounts")那么这个Account就是

Account.xml的名称了

真正想看到测试结果得另写个JUNIT测试类,添加junit的jar包,这里我写了MyTest.java

package com.mydomain.data;

import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.Test;

import com.mydomain.domain.Account;

public class MyTest {
	@Test
	public void selectAllAccounts(){
		try {
			List list=SimpleExample.selectAllAccounts();
			System.out.println(Arrays.toString(list.toArray()));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void selectAccountById(){
		try {
			Account account=SimpleExample.selectAccountById(1);
			System.out.println(account);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void insertAccount(){
		Account account=new Account();
		account.setFirstName("tom");
		account.setLastName("jam");
		account.setEmailAddress("china");
		try {
			SimpleExample.insertAccount(account);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void updateAccount(){
	    try {
			Account account=SimpleExample.selectAccountById(2);
			account.setFirstName("gates");
			SimpleExample.updateAccount(account);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
	}
	
	public void deleteAccount(){
		try {
			SimpleExample.deleteAccount(1);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
}

 

怎么样,ibatis也不是很难吧,将所有的SQL语句统一管理起来,十分方便,对于写复杂的SQL语句也可以直接来写

 

 顺便介绍下MyBatis

MyBatis来源于iBATIS,iBATIS是一个由Clinton Begin在2001年发起的开放源代码项目,iBATIS一词来源于“internet”和“abatis”的组合。该项目最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),它是著名的ORM开发框架,分为Java和.NET版本,有着众多的追随者。

iBATIS更名为MyBatis并迁移到Google Code,此次项目迁移后,将启用新的网站http://www.mybatis.org/,由于目前只是改了名字,因此仍然可直接浏览iBatis的文档。

MyBatis开发团队希望脱离Apache而独立发展,并保证不会修改授权协议(Apache License)、代码完全兼容、包名不会更改、也不会删除 Apache站上的任何相关资源。

改名后的第一次版本MyBatis 3.0.1已经发布,基于iBatis 3.0版本,该版本非常稳定,已经有很多用户使用了数周时间,修复了一些小bug。欲下载 MyBatis 3.0.1请到它新的网站http://www.mybatis.org/。 目前版本是3.0.2

  • 大小: 5.1 KB
7
1
分享到:
评论
6 楼 zakaz168 2013-02-26  
很好,谢谢。
5 楼 因为java所以java 2010-11-11  
http://www.mybatis.org/
pangbuddy 写道
我也喜欢在自己的项目中用Mybatis,觉得它比Hibernate来的简便些,希望听听行家们的评价。

没有吧,hibernate为我们做了许多事,所以中小型的项目开发者都喜欢用hibernate:而ibatis许多事情都需要我们自己做,他只是相当于对dao的上层与数据库进行交互时做了xml的配置整合,方便了我们与数据库交互的管理,但是ibatis的性能还是要优于hibernate,因为他够轻,职责单一,ibatis更适合大项目的开发应用。 
4 楼 JavaCrazyer 2010-10-29  
马伽角 写道
能不写配置文件吗??

不写配置文件的做法我还真没试过,你又什么好方法么,分享下了
3 楼 马伽角 2010-10-29  
能不写配置文件吗??
2 楼 杰伊情圣 2010-10-27  
没怎么看懂哎!!
1 楼 pangbuddy 2010-10-25  
我也喜欢在自己的项目中用Mybatis,觉得它比Hibernate来的简便些,希望听听行家们的评价。

相关推荐

    ibatis入门实例

    【标题】:“ibatis入门实例” Ibatis,全称MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以被看作是一个半...

    ibatis入门到精通详细讲解

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

    Ibatis实例教程 入门使用

    本教程旨在为初学者提供一个全面的Ibatis入门指南,帮助你快速理解和掌握这个强大的数据访问工具。 Ibatis的核心理念是将SQL语句与Java代码分离,通过XML或注解的方式配置在Mapper接口中,实现了SQL的动态执行,...

    ibatis 入门的例子

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

    ibatis入门--对数据库的操作

    【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...

    iBatis入门与精通

    本资料集围绕iBatis的入门与精通展开,通过一系列文档和实例,帮助读者快速理解和掌握这一框架。 首先,`ibatis 2.3.4 api.chm`是iBatis的API参考手册,其中包含了iBatis 2.3.4版本的所有类和方法的详细说明,是...

    freemarker+struts2+ibatis入门学习摘要

    "freemarker+struts2+ibatis入门学习摘要" 这个标题揭示了本文档将围绕三个核心Java技术框架进行讲解:FreeMarker、Struts2和iBatis。这些是Java Web开发中常用的技术,它们分别负责视图层、控制层和数据访问层的...

    ibatis-sqlMap-入门教程(代码)

    【标题】"ibatis-sqlMap-入门教程(代码)" 涉及的知识点主要集中在使用MyBatis(原iBATIS)框架进行数据库操作的初步实践上。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎...

    ibatis教程 输入参数详解

    以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...

    iBATIS SQL Maps入门教程.rar

    8. **实际案例**:教程通常会通过具体的实例,比如用户登录、商品添加等场景,来演示如何使用iBATIS进行数据库操作,帮助读者更好地理解理论知识。 9. **下载说明.txt**:这个文件可能是对教程获取和使用的一些说明...

    IBATIS_IN_ACTION

    除了针对Java的详细讲解外,本书还提供了iBATIS.NET的快速入门指南,对于.NET平台的开发者同样具有参考价值。 总之,《IBATIS_IN_ACTION》不仅是一本详尽的技术手册,更是一部引导读者深入了解iBATIS核心理念与技术...

    ibatisDemo.zip

    在这个"ibatisDemo.zip"压缩包中,我们可能找到了一系列关于快速入门Ibatis的资源,包括实际的增删改查(CRUD)示例和配套的讲解视频。这对于我们理解和学习Ibatis非常有帮助。 首先,让我们深入了解一下Ibatis的...

    iBatis文档\ibatis.doc

    本文档将详细讲解iBatis的核心概念、快速入门以及高级特性。 ### iBatis 快速启动 #### 准备工作 在开始使用iBatis之前,确保你已经安装了Java运行环境,并配置了相应的JDBC驱动,这将使iBatis能够与数据库进行...

    ibatis 开发指南,开发手册 txt 版

    文档主要包含了iBatis的快速入门指南、核心概念介绍以及高级特性讲解等内容。 ### iBatis快速入门 - **网站**: [http://www.ibatis.com](http://www.ibatis.com) - **数据库表设计**: 例如一个简单的用户表`t_user`...

    ibatis2.3 jar (ibatis pdf 教程)

    2. **安装与配置**:讲解如何在项目中引入Ibatis jar,配置SqlMapConfig.xml文件,以及数据库驱动等相关设置。 3. **SQL映射文件**:详述SqlMap的结构和XML语法,包括如何编写SQL语句,定义参数和结果映射。 4. **...

    iBATIS-SqlMaps-2-Tutorial_cn

    总的来说,《iBATIS-SqlMaps-2-Tutorial_cn》是一本全面覆盖iBATIS基础和进阶内容的教程,它不仅适合初学者入门,也对有一定经验的开发者有很好的参考价值。通过阅读本书,你可以深入理解iBATIS的工作原理,掌握其...

    iBATIS实战

    书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...

    ibatis学习资料大全

    1. **Ibatis in Action**:这是一本专门介绍Ibatis的英文书籍,书中全面讲解了Ibatis的设计理念、核心功能以及实际应用。通过阅读这本书,你可以了解如何配置Ibatis、如何编写动态SQL、如何处理复杂的结果映射,以及...

Global site tag (gtag.js) - Google Analytics