原创作者: 饕尽天下   阅读:10832次   评论:3条   更新时间:2011-05-26    

iBatis是像Hibernate, JDOEJB一样的数据持久框架,它将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.

本节我们将向你讲述如何配置iBatis来运行一个小型程序.既然一次性将所有知识全部解释很难,我们索性把本教程分为几个单独的例子来陈述.该例是关于如何从数据库读取数据并将结果显示在你的命令提示符上.在第二个例子中你将会到如何添加更多的数据到数据库中,在此之后的第三个例子将会向你展示如何通过iBatis从记录中删除数据.

现在的第一个例子将会向你展示如何从数据库中读取记录,我们需要一个数据库来执行查询,所以我们使用MySQL5.0作为这个例子的数据库.

这里我们将要检索一些人的contact的信息, contact的表结构给出如下 :

DROP TABLE IF EXISTS `contact`;
CREATE TABLE `contact` (
       `id` int(11) NOT NULL auto_increment,
       `firstName` varchar(20) default NULL,
       `lastName` varchar(20) default NULL,
       `email` varchar(20) default NULL,
       PRIMARY KEY (`id`)
);

根据Contact表我们需要创建一个POJO,在我们的例子中,数据库vin有一个表Contact,包括四个字段 :

  • id
  • firstName
  • lastName
  • email

Contact.java

public class Contact {
  private String firstName; 
  private String lastName;   
  private String email;  
  private int id;
 
  public Contact() {}
  
  public Contact(
    String firstName,
    String lastName,
    String email) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
    }
  
  public String getEmail() {
    return email;
  }
  public void setEmail(String email) {
    this.email = email;
  }
  public String getFirstName() {
    return firstName;
  }
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getLastName() {
    return lastName;
  }
  public void setLastName(String lastName) {
    this.lastName = lastName;
  } 
}

为了映射配置我们需要创建SqlMapConfig.xml来指定如下信息 :

Ÿ           针对映射语句的命名空间前缀

Ÿ           我们的数据库将使用JDBC来进行访问

Ÿ           针对MySQLJDBC驱动为" com.mysql.jdbc.Driver"

Ÿ           连接URL"jdbc:mysql://192.168.10.112:3306/vin"

Ÿ           用户名与密码分别为"root""root"

Ÿ           我们的SQL语句描述在"Contact.xml"

SqlMapConfig.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>
   <settings useStatementNamespaces="true"/>
     <transactionManager type="JDBC">
        <dataSource type="SIMPLE">
          <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
          <property name="JDBC.ConnectionURL"
               value="jdbc:mysql://192.168.10.112:3306/vin"/>
          <property name="JDBC.Username" value="root"/>
          <property name="JDBC.Password" value="root"/>
        </dataSource>
      </transactionManager>
     <sqlMap resource="Contact.xml"/> 
</sqlMapConfig>

 

映射文件在下面给出,它主要为我们的程序负责执行SQL查询. Contact.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="Contact">
<!--- Showing all data of table -->
<select id="getAll" resultClass="Contact">
          select * from contact
</select>
</sqlMap>

现在为了显示数据库中的数据我们需要创建一个类----IbatisExample,它从SqlMapConfig.xml中读取配置并在你的控制台输出所有数据. IbatisExample.java的代码如下 :

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
 
public class IbatisExample{
  public static void main(String[] args)
    throws IOException,SQLException{
    Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient sqlMap = 
      SqlMapClientBuilder.buildSqlMapClient(reader);
      //Output all contacts
      System.out.println("All Contacts");
      List<Contact> contacts = (List<Contact>)
        sqlMap.queryForList("Contact.getAll",null);
        Contact contact = null;
      for (Contact c : contacts) {
      System.out.print("  " + c.getId());
      System.out.print("  " + c.getFirstName());
      System.out.print("  " + c.getLastName());
      System.out.print("  " + c.getEmail());
        contact = c; 
      System.out.println("");
      }    
  }
}

 

为了运行该例,你需要遵循如下步骤 :

Ÿ           在你的MySQL数据库中创建表Contact

Ÿ           下载iBatisJAR文件(ibatis-common-2.jar,ibatis-dao-2.jar,ibatis-sqlmap-2.jar),并将其放置在你的lib目录中

Ÿ           设置类路径

Ÿ           创建Contact.java将其编译

Ÿ           创建Contact.java

Ÿ           创建SqlMapConfig.xml

Ÿ           创建IbatisExample.java并将其编译

Ÿ           执行IbatisExample文件

输出 :

你的命令提示符应该有像这样的输出 :

 

 

 

 

  • 大小: 6.7 KB
评论 共 3 条 请登录后发表评论
3 楼 linux1308 2014-01-23 13:28

iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。
如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。
近期项目用到 iBatis,所以需要学习iBatis,下面是总结几个不错学习网站给大家学习参考:
1、官网(英文资料):http://www.mybatis.org/
2、iBATIS(中文教程):http://www.yiibai.com/ibatis/
3、iBATIS - iBATIS Apache软件基金会的官方网站。
http://ibatis.apache.org/index.html
2 楼 逐梦的天使 2013-05-30 16:37
1 楼 will_akazam 2012-07-12 14:20
              

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics