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配置文件,内容如下:
log4j
log4j.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.java
public 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");
 }

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68623.html