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();
}
}
}