ibatis入门实例讲解

之前大家上网的ibatis官方网站:[url]http://www.ibatis.com[/url]现在已经不再存在了,已经被MyBatis所替代[url]http://www.mybatis.org/[/url],我现在使用了还是之前的ibatis2.3.4,所以这个例子也是针对2.3.4版本讲解的
首先呢,打开资源包,可以看到里面有一个simple_exzample的文件夹,在MyEclipse8.5中新建一个JAVA项目,将刚才的文件夹中内容复制到项目SRC下,这样的话呢,可以看到这样一个目录

[img]http://dl.iteye.com/upload/attachment/501756/abb9106e-9e9b-36cc-a5bc-c31c16e4aebe.png[/img]


这个MyTest是我后来加上的测试实实例,当然这些代码还不足以让程序测试出结果来
看看ibatis的SQL语句配置类MySqlMapConfig.xml
Xml代码
<span style="font-size: medium;"><?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>
</span>


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

上面的<ResultMap>标签中有指定每个Account属性对应的数据库的列名,所以就新建数据库了
这样数据建立完成后,我们就可以测试了,这回就用到了SimpleExample.java类了
Java代码
<span style="font-size: medium;">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);
}

}
</span>

像上面的增删改查中用到的代替SQL语句的映射KEY,也是可以加上相应的XML文件的配置名称的,如: return sqlMapper.queryForList("Account.selectAllAccounts")那么这个Account就是
Account.xml的名称了
真正想看到测试结果得另写个JUNIT测试类,添加junit的jar包,这里我写了MyTest.java
Java代码
<span style="font-size: medium;">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();
}
}

}
</span>


怎么样,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,此次项目迁移后,将启用新的网站[url]http://www.mybatis.org/[/url],由于目前只是改了名字,因此仍然可直接浏览iBatis的文档。

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

改名后的第一次版本MyBatis 3.0.1已经发布,基于iBatis 3.0版本,该版本非常稳定,已经有很多用户使用了数周时间,修复了一些小bug。欲下载 MyBatis 3.0.1请到它新的网站[url]http://www.mybatis.org/[/url]。 目前版本是3.0.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值