技术博客: http://blog.sina.com.cn/s/articlelist_1766082610_0_1.html
以前都是用hibernate没有用过ibatis,今天闲着没事,找了资料看了下这里记录下例子的源码,一下代码保证可以跑起来,我已经测试运行过
下载(这个地址完全可以下载):
http://apache.freelamp.com/ibatis/binaries/ibatis.java/ibatis-2.3.4.726.zip
环境配置如下:
oracle10G、myeclipse
需要添加的添加jar包:
commons-dbcp.jar
commons-logging.jar
commons-logging-api.jar
commons-pool.jar
hsqldb.jar
ibatis-common-2.jar
ibatis-dao-2.jar
ibatis-sqlmap-2.jar
classes12.jar
创建表:
CREATE TABLE t_user (
id number(11) NOT NULL primary key,
name varchar2(50),
sex number(11)
)
创建序列
create sequence position_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999
nocycle
nocache
noorder;
创建触发器
create or replace trigger t_use
before insert on t_user
for each row
begin
select position_seq.nextval into:new.id from sys.dual;
end;
-----------------------一下面是配置文件-----------
配置文件路径:
com.ctgusec.zhupan.maps.SqlMapConfig.xml
com.ctgusec.zhupan.maps.User.xml
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="oracle.jdbc.driver.OracleDriver" />
<property name="JDBC.ConnectionURL"
value="jdbc:oracle:thin:@192.168.0.67:1521:ortest" />
<property name="JDBC.Username" value="scott" />
<property name="JDBC.Password" value="aa" />
<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 sample" />
<property name="Pool.PingEnabled" value="false" />
<property name="Pool.PingConnectionsOlderThan" value="1" />
<property name="Pool.PingConnectionsNotUsedFor" value="1" />
</dataSource>
</transactionManager>
<sqlMap resource="com/ctgusec/zhupan/maps/User.xml" />
</sqlMapConfig>
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.ctgusec.zhupan.model.User" />
<select id="getUser" parameterClass="java.lang.String"
resultClass="user">
<![CDATA[
select
name,
sex
from t_user
where name = #name#
]]>
</select>
<select id="getAllUser" resultClass="user">
<![CDATA[
select name,sex from t_user where name like '%$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 (id, name, sex) VALUES (position_seq.nextval, #name#, #sex# )
</insert>
<delete id="deleteUser" parameterClass="java.lang.String">
delete from t_user where id=#value#
</delete>
</sqlMap>
下面是实体类:
com.ctgusec.zhupan.model.User.java
源码:
package com.ctgusec.zhupan.model;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Integer sex;
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;
}
}
下面是主main类
com.ctgusec.zhupan。ExampleMain.java
源码如下:
package com.ctgusec.zhupan;
import java.sql.SQLException;
import java.util.List;
import com.ctgusec.zhupan.model.User;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
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", "aa");
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();
System.out.println("user.size()="+user.size());
for(int i=0;i<user.size();i++)
{
System.out.println(((User)user.get(i)).getName());
}
}
}