专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
技术文档
当前位置:首页 > 技术文档 >  > 
Ibatis 教程

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,在这里需要注意 。