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

来源:互联网 发布:网络限制指令 编辑:程序博客网 时间:2024/06/05 09:57

介绍

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对象的CRUDxml映射配置: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);    }}




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕九个月肚子长痱子怎么办 怀孕前体重偏胖怎么办 怀孕打胰岛素血糖控制不好怎么办 孕后期憋的难受怎么办 怀孕6个月不想生怎么办 孕六个月不想要怎么办 怀孕9个月喝酒了怎么办 怀孕8个月喝醉了怎么办 怀孕6个月胃酸烧心怎么办 怀孕7个月胃酸怎么办 怀孕5个月胃酸怎么办 怀孕2个月胃酸怎么办 怀孕六个月胃酸烧心怎么办 孕六个月反胃酸怎么办 怀孕三个月胃酸吐酸水怎么办 孕六个月胃难受怎么办 孕6个月胃酸厉害怎么办 孕妇6个月胃酸怎么办 孕早期胎盘早剥怎么办 孕妇晕车怎么办最有效方法 怀孕了受凉胃疼怎么办 怀孕4个月胎位低怎么办 6个月胎位低怎么办 7个多月了胎位低怎么办 瑜伽按摩球破了怎么办 孕妇吐完胸口疼怎么办 孕25周胸口堵怎么办呢 孕期没做过产检怎么办 宝宝的泪囊堵塞怎么办 瑜伽球塞子丢了怎么办 瑜伽球塞子没了怎么办 练阴瑜伽是想睡怎么办 肠道引流拨断了怎么办 瑜伽动作做不到位怎么办 胃肠吸收不好一直长不胖怎么办 小孩把泡泡糖吞进肚子怎么办 练习瑜伽又?带硬怎么办 天气太热没有空调怎么办 腹股沟岔气怎么办才能快点好 瑜伽馆不给退卡怎么办 膝盖总是凉凉的怎么办