ibatis入门(第一弹)

一、准备工作
1、下载ibatis软件包(http://www.ibatis.com/
2、创建测试数据库,并在数据库中创建一个t_user 表,其中包含三个字段:
Ø id(int)
Ø name(varchar)
Ø sex(int)。
3、为了在开发过程更加直观,我们需要将ibatis日志打开以便观察ibatis运作的细节。
ibatis 采用Apache common_logging,并结合Apache log4j 作为日志输出组件。在
CLASSPATH 中新建log4j.properties配置文件,内容如下:
log4jlog4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n
log4j.logger.java.sql.PreparedStatement=DEBUG


二、构建ibatis基础代码
1. ibatis 实例配置
一个典型的配置文件如下(具体配置项目的含义见后):

sqlMapconfig.xml<?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">
<property name="JDBC.Driver"
value="com.p6spy.engine.spy.P6SpyDriver"/>
<property name="JDBC.ConnectionURL"
value="jdbc:mysql://localhost/sample"/>
<property name="JDBC.Username" value="user"/>
<property name="JDBC.Password" value="mypass"/>
<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
ACCOUNT"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan"
value="1"/>
<property name="Pool.PingConnectionsNotUsedFor"
value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/ibatis/sample/User.xml"/>
</sqlMapConfig>

2. POJO(Plain Ordinary Java Object)
下面是我们用作示例的一个POJO:
User.javapublic class User implements Serializable {
private Integer id;
private String name;
private Integer sex;
private Set addresses = new HashSet();
/** default constructor */
public User() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return this.sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
}

3. 映射文件
与Hibernate 不同。因为需要人工编写SQL 代码,ibatis 的映射文件一般采
用手动编写(通过Copy/Paste,手工编写映射文件也并没想象中的麻烦)。
针对上面POJO 的映射代码如下:
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="com.ibatis.sample.User"/>
<select id="getUser"
parameterClass="java.lang.String"
resultClass="user">
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</select>
<update id="updateUser"
parameterClass="user">
<![CDATA[
UPDATE t_user
SET
name=#name#,
sex=#sex#
WHERE id = #id#
]]>
</update>
<insert id="insertUser"
parameterClass="user"
>
INSERT INTO t_user (
name,
sex)
VALUES (
#name#,
#sex#
)
</insert>
<delete id="deleteUser"
parameterClass="java.lang.String">
delete from t_user
where id = #value#
</delete>
</sqlMap>

4、主函数,调用
ExampleMain.java

public class ExampleMain {

 public static void update() {
  //首先初始化iBatis获得一个SqlMapClient对象
  String resource = "com/ctgusec/zhupan/maps/SqlMapConfig.xml";
  com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
  try {
   java.io.Reader reader = com.ibatis.common.resources.Resources
     .getResourceAsReader(resource);
   sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
  } catch (Exception e) {
   e.printStackTrace();
  }
  // sqlMap系统初始化完毕,开始执行update操作
  try {
   sqlMap.startTransaction();
   User user = new User();
   user.setId(new Integer(1));
   user.setName("zhupan");
   user.setSex(new Integer(1));
   sqlMap.update("updateUser", user);
   sqlMap.commitTransaction();
  } catch (SQLException e) {
   System.out.println(e.getMessage());
  } finally {
   try {
    sqlMap.endTransaction();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
 public static List getUser() {
//  首先初始化iBatis获得一个SqlMapClient对象
  String resource = "com/ctgusec/zhupan/maps/SqlMapConfig.xml";
  com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
  List user=null;
  try {
   java.io.Reader reader = com.ibatis.common.resources.Resources
     .getResourceAsReader(resource);
   sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
  } catch (Exception e) {
   e.printStackTrace();
  }
  // sqlMap系统初始化完毕,开始执行getAllUser操作
  try {
   sqlMap.startTransaction();    
   user=sqlMap.queryForList("getAllUser", null);
   sqlMap.commitTransaction();
  } catch (SQLException e) {
   System.out.println(e.getMessage());
  } finally {
   try {
    sqlMap.endTransaction();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return user;
 }
 public static void main(String[] args) {
  update();
  List user=getUser(); 
  for(int i=0;i<user.size();i++)
  {
   System.out.println(((User)user.get(i)).getName());
  }
  System.out.println("fdfdfd");
 }


参考资料:《ibatis 开发指南》

作者:Ivan-zheng
出处:http://www.cnblogs.com/ivan-zheng/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。




posted @ 2009-10-10 16:27  Ivan-zheng  阅读(970)  评论(0编辑  收藏  举报