ibatis  也是一个数据持久层  是较于Hibernate的轻量级 的一个开源项目,以前做SSH项目的时候,常有听说它与Hibernate进行比较,说一下我的操作感受。

 可在 http://www.apache.org/直接进行下载  我刚下的是最新版的2.3.4的 郁闷

竟然缺少dao包 说是2.2 还是2.几  不提供了  直接于spring 配合使用,直接GOOGLE找了别人的demo 进行jar COPY,得以解决!

他还提供代码生成工具,这个用MyEclipse在线安装即可。

abatorConfig.xml   代码生成的配置文件  个人觉得不怎么强  不如CodeSmith这样的强!

文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE abatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN" "http://ibatis.apache.org/dtd/abator-config_1_0.dtd" >
<abatorConfiguration >
  <abatorContext >
 
    <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    connectionURL="jdbc:sqlserver://localhost:1433;DatabaseName=DemoDB" userId="sa" password="sa" >
      <classPathEntry location="D:\AB\sqljdbc.jar" />
    </jdbcConnection>
   
    <!--targetPackage指定一个包名存放model bean,targetProject是工程名--> 
    <javaModelGenerator targetPackage="com.entity" targetProject="IbatisDemo" />
   
   <!--sqlMapGenerator 指定一个包名存放sqlMap.xml--> 
    <sqlMapGenerator targetPackage="com.dao" targetProject="IbatisDemo" />
  
   <!--daoGenerator 指定一个包名存放dao以及daoImpl--> 
    <daoGenerator targetPackage="com.dao" targetProject="IbatisDemo" type="IBATIS" />
  
    <!--表名,可以多个,默认不写columnOverride的话生成所有字段--> 
    <table tableName="userInfo" >

    </table>
   
  </abatorContext>
</abatorConfiguration>

生产这些代码以后生成比较多 还一大堆注释说明,我都删了 就留下了个添加以供测试

 

sqpMapConfig.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>  
    <!-- 唯一的Properties文件,加载数据库连接信息 -->  
   <!-- <properties resource="mysql.properties"/>   -->
<!--配置和优化SqlMapClient实例的各选项,是可选的  
<settings   
    cacheModelsEnabled="true"//设置缓存      
    enhancementEnabled="true" //是否针对POJO启用字节码增加机制以提升geter/seter的调用效用,为延迟加载带来了及大的性能提升。      
    lazyLoadingEnabled="true"//延时加载      
    errorTracingEnabled="true"      
    maxRequests="32"               //最大并发请求数  
    maxSessions="10"           //最大Session数
    maxTransactions="5"           //最大并发事务数
    useStatementNamespaces="false"   
    />   
-->  
    <!-- 配置Ibatis事务管理,使用JDBC事务类型,数据源使用Simple类型 -->  
    <transactionManager type="JDBC">  
        <dataSource type="SIMPLE">  
            <property name="JDBC.Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>  
            <property name="JDBC.ConnectionURL" value="jdbc:sqlserver://localhost:1433;DatabaseName=DemoDB"/>  
            <property name="JDBC.Username" value="sa"/>  
            <property name="JDBC.Password" value="sa"/>  
        </dataSource>  
    </transactionManager>   
    <!-- 配置Ibatis要使用的SqlMap文件信息 -->  
    <sqlMap resource="com/dao/UserInfo_SqlMap.xml"/>  
</sqlMapConfig> 

现在就主要操作UserInfo类

--userInfo_sqlMap.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="UserInfo" >
  <resultMap id="abatorgenerated_UserinfoResult" class="com.entity.Userinfo" >
    <!--
      WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
      This element was generated on Sun May 17 21:10:33 CST 2009.
    -->
    <result column="id" property="id" jdbcType="INTEGER" />
    <result column="userName" property="username" jdbcType="VARCHAR" />
    <result column="pwd" property="pwd" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
  </resultMap>


  <insert id="abatorgenerated_insert" parameterClass="com.entity.Userinfo" >
     <selectKey resultClass="int" type="post" keyProperty="id" >   --返回自动增长值
        select @@IDENTITY as value  
    </selectKey>
    insert into UserInfo (userName, pwd, age)
    values (#username:VARCHAR#, #pwd:VARCHAR#, #age:INTEGER#)
  </insert>
</sqlMap>

 

 

OK   看到了吗 就一个插入的操作

测试一下

 

package com.test;

import java.io.IOException;
import java.io.Reader;

import com.entity.Userinfo;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

 

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       try {
        //获取资源文件
  Reader reader=Resources.getResourceAsReader("sqlMapConfig.xml");
  SqlMapClient mapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
  Userinfo userinfo=new Userinfo();
  userinfo.setAge(100);
  userinfo.setUsername("MRRRRR");
  userinfo.setPwd("123456");
  //事务管理
  mapClient.startTransaction();
     String newId= mapClient.insert("abatorgenerated_insert", userinfo).toString();
   mapClient.commitTransaction();
  System.out.println("insert success id value of :"+newId);
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

}

 


 

posted on 2009-05-17 22:15  冷傲残痕  阅读(1677)  评论(0编辑  收藏  举报