您的位置:首页 > 数据库

[置顶]       ibatis学习(一)--ibatis介绍以及用例

2013-05-08 13:48 465 查看

介绍

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);      }  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息