您的位置:首页 > 其它

ibatis学习(一)--ibatis介绍以及用例

2013-08-16 11:02 435 查看
转自:http://www.blogjava.net/freeman1984/archive/2007/12/07/166116.html 


介绍

iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。

iBATIS不同于一般的OR映射框架(eg:hibernate)。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。iBATIS则是将SQL查询的参数和结果集映射到类。因此可以说,iBATIS做的是SQL
Mapping的工作。它把SQL语句看成输入以及输出,结果集就是输出,而where后面的条件参数则是输入。iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。

iBATIS使用xml文件来映射这些输入以及输出。能大大减少数据库存储部分的代码量,而且可以非常方便的利用SQL中的一些小技巧。


简单示例

基于ibatis-2.3.0.677版本。

1、 创建新的项目,并引入jar包

a)         ibatis-2.3.0.677.jar

b)        mysql驱动

2、 在类路径中(classes下)提供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://127.0.0.1/ibatis"/>
      <property name="JDBC.Username" value="root"/>
      <property name="JDBC.Password" value="mysql"/>
    </dataSource>
 </transactionManager>
 <sqlMap resource="com/ibatis/model/User.xml"/>
</sqlMapConfig>
3、创建实体类:User.java
package com.ibatis.model;
publicclass User
{
    privateintid;
    private String username;
    private String password;
   
    publicint getId()
{
       returnid;
    }
    publicvoid setId(int id)
{
       this.id =
id;
    }
    public String
getPassword() {
       returnpassword;
    }
    publicvoid setPassword(String
password) {
       this.password =
password;
    }
    public String
getUsername() {
       returnusername;
    }
    publicvoid setUsername(String
username) {
       this.username =
username;
    }
}
4、创建针对User对象的CRUD的xml映射配置:User.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="User">
 <!-- Use type aliases to avoid typing the full classname
every time. -->
 <typeAlias alias="User" type="com.ibatis.model.User"/>
 <!-- Select with no parameters using the result map for
Account class. -->
 <select id="selectAllUsers" resultClass="User">
    select * from t_user
 </select>
 
 <select id="selectUser" resultClass="User" parameterClass="int">
  select * from t_user where id=#id#
 </select>
 
 <insert id="insertUser" parameterClass="User">
  insert into t_user values (
       null,#username#,#password#
  )
 </insert>
 
 <update id="updateUser" parameterClass="User">
  update t_user set username = #username#,password=#password#
  where id=#id#
 </update>
 
 <delete id="deleteUser" parameterClass="int">
  delete from t_user where id=#id#
 </delete>
</sqlMap>
5、创建测试程序测试:
package com.crm.model;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
 *最简单的形式!
 *@authorq
 *
 */
publicclass UserTest {
    /**
     *@paramargs
     */
    publicstaticvoid main(String[]
args) throws Exception{
       //从配置文件中得到SqlMapClient对象
       Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
       SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
       reader.close();
      
       //创建用户数据
       for(int i=0;
i<10; i++){
           User user = new User();
           user.setUsername("用户"+i);
           user.setPassword("密码"+i);
           sqlMapper.insert("insertUser",
user);
       }
      
       //查询用户数据
       List users = sqlMapper.queryForList("selectAllUsers");
       for (Iterator
iter = users.iterator(); iter.hasNext();) {
           User user = (User) iter.next();
           System.out.println(user.getUsername());
       }
      
       //查询特定用户的数据
       User user = (User)sqlMapper.queryForObject("selectUser",
1);
       System.out.println("用户【id="+1+"】的名称是:"+user.getUsername());
      
       //更新用户的信息
       user = new User();
       user.setId(3);
       user.setUsername("更改之后的用户名称");
       user.setPassword("密码被更改");
       sqlMapper.update("updateUser",
user);
      
       //删除用户的信息
       sqlMapper.delete("deleteUser",
6);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: