Ibatis 教程
简单了环境配置
0,所需文件 ibatis.jar 可以从 www.ibatis.com 下载我这里使用的是ibatis-2.3.0.677.jar
数据库为mysql5.0 将 mysql的jdbc 驱动还有 ibatis 的jar 复制到项目 lib 目录下。
目前Myeclipse 还不支持 ibatis 现在只能手动添加了。
1,sql:
CREATE TABLE `t_user` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(64) NOT NULL,
`sex` int(4) NOT NULL,
PRIMARY KEY (`id`)
);
2,新建POJO 类
package com.qingruxu.pojo;
public class User implements java.io.Serializable{
private Integer id;
private String name;
public User(Integer id, String name, Integer sex) {
super();
this.id = id;
this.name = name;
this.sex = sex;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
private Integer sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
}
没有了开发工具,这些代码都要手写,当然你也可以在建一个项目,用hibernate 生成这些个Pojo
3,手动编写 Pojo 映射文件
<?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="User">
<typeAlias alias="User" type="com.qingruxu.pojo.User" />
<resultMap class="User" id="UserResult">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
</resultMap>
<select id="selectUser" resultMap="UserResult">
select * from t_user
</select>
</sqlMap>
3,编写ibatis 配置文件 SqlMapConfig.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>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="123456"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/qingruxu/data/User.xml"/>
</sqlMapConfig>
4,编写测试类
package com.qingruxu.test;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class Test {
private static SqlMapClient sqlMap;
static {
try {
Reader reader=Resources.getResourceAsReader("com/qingruxu/data/SqlMapConfig.xml");
sqlMap=SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
List data=sqlMap.queryForList("selectUser");
System.out.println(data);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Test t=new Test();
}
}
5,以上仅是简单的查询功能下面是其它功能CRUD
根据ID删除
<delete id="deleteUserById" parameterClass="int">
delete from t_user where id=#id# //这里的#id# 也可以写成别的样子如 id5212 都是可以的。这里仅是一个临时变量
</delete>
sqlMap.delete("deleteUserById", 2);
//添加User
<insert id="insertUser" parameterClass="User">
insert into t_user (`name`,`sex`) values(#name#,#sex#)
</insert>
sqlMap.insert("insertUser", new User(1,"清如许",2));
6,其它
<select id="selectUser" resultMap="UserResult">
<![CDATA[
select * from t_user
]]>
</select>
通过<![CDATA[……]]>节点,可以避免SQL 中与XML 规范相冲突的字符对
XML 映射文件的合法性造成影响。
7,事物操作
//事物测试
sqlMap.startTransaction();
try{
for(int i=1;i<10;i++){
sqlMap.insert("insertUser", new User(i,"清如许",2));
}
sqlMap.insert("insertUser", new User(1,"清如许",2));
sqlMap.commitTransaction();
}catch(Exception e)
{
}
finally{
sqlMap.endTransaction();
}
注:在mysql 中 InnoDB 支持事物,一般默认的是MyISAM,在这里需要注意 。