




免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
介绍iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。iBATIS不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,那时一种元数据(meta-data)映射。iBatis则是将SQL查询的参数和结果集映射到类。所以,iBATIS做的是SQL Mapping的工作。它把SQL语句看出输入以及输出,结果集就是输出,而where后面的条件参数则是输入。iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。iBATIS使用xml文件来映射这些输入以及输出。简单实例基于ibatis-67版本。1、 创建新的项目,并引入jar包a) Ibatis-77.jarb) Mysql驱动2、 在类路径中提供ibatis的配置文件:sqlMapConfig.xml 3、 创建实体类:User.javapackage cn.vAst.crm.model;public class User private int id;private String username;private String password;public int getId() return id;public void setId(int id) this.id = id;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getUsername() return username;public void setUsername(String username) this.username = username;4、 创建针对User对象的CRUD的xml映射配置:User.xml select * from t_user select * from t_user where id=#id# insert into t_user values ( null,#username#,#password# ) update t_user set username = #username#, password = #password# where id = #id# delete from t_user where id = #id# 5、 创建测试程序测试:package cn.vAst.crm.ibatis;import java.io.Reader;import java.util.Iterator;import java.util.List;import cn.vAst.crm.model.User;import mon.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class UserTest public static void main(String args) throws Exception /从配置文件中得到SqlMapClient对象Reader reader = Resources.getResourceAsReader(sqlMapConfig.xml);SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);reader.close();/创建用户数据for(int i=0; i10; 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);SqlMapClient对象这个对象是iBatis操作数据库的接口(执行CRUD等操作)。它可以执行事务管理等操作。这个类是我们使用iBatis的最主要的类。它是线程安全的。通常,将它定义为单例。(如hibernate中sessionFactory的定义类似)。如:import java.io.Reader;import mon.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class IbatisSQLMapConfig private static final SqlMapClient sqlMap;/在静态区块中初始化返回statictry/声明配置文件的名称(映射文件被定义其中)String resource = sql_map_config.xml;/利用工具类Resources来读取到配置文件Reader reader = Resources.getResourceAsReader(resource);/创建SqlMapClient接口的变量实例sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); catch(Exception e)e.printStackTrace();throw new RuntimeException(Error initializing MyAppSqlConfig class. cause:+e);public static SqlMapClient getSqlMapInstance()/提供静态方法返回静态区块中得到的SqlMapClientreturn sqlMap;事务处理可以使用SqlMapClient的startTransaction/commitTransaction/endTransaction等方法来控制事务的边界。如果与spring整合(这是iBatis推荐的方式),则我们需要在spring配置文件中指定其事务特性。与spring集成Spring通过DAO模式,提供了对iBATIS的良好支持。SqlMapClient对象是iBatis中的主要对象,我们可以通过配置让spring来管理SqlMapClient对象的创建。与hibernate类似,Spring提供了SqlMapClientDaoSupport对象,我们的DAO可以继承这个类,通过它提供的SqlMapClientTemplate对象来操纵数据库。看起来这些概念都与hibernate类似。通过SqlMapClientTemplate来操纵数据库的CRUD是没有问题的,这里关键的问题是事务处理。Spring提供了强大的声明式事务处理功能,我们已经清楚hibernate中如何配置声明式的事务,那么在iBatis中如何获得声明式事务的功能呢?第一,我们需要了解的是Spring通过AOP来拦截方法的调用,而在这些方法上面添加声明事务处理的能力。典型配置如下:这些事务都是声明在业务逻辑层的对象上的。第二,我们需要一个事务管理器,对事务进行管理。此后,我们需要让Spring来管理SqlMapClient对象:classpath:sqlMapConfig.xml我们DAO的编写:package cn.vAst.crm.dao.impl.ibatis;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import cn.vAst.crm.dao.UserDAO;import cn.vAst.crm.model.User;public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO public void delete(User user) getSqlMapClientTemplate().delete(delete, user.getId();public List findAll() return getSqlMapClientTemplate().queryForList(findAll);public User findById(int id) return (User)getSqlMapClientTemplate().queryForObject(fin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中doing公开课课件
- 小区园林景观绿化工程施工方案
- 高一河流地貌课件
- 北京市八年级上学期期中考试英语试卷含参考答案 (5份)
- 离婚子女抚养费及全面生活支持协议范本
- 离婚协议书中子女抚养权变更争议诉讼协议范本集锦
- 留学语言学校申请咨询服务协议
- 成人职业素养培训咨询服务合同
- 家电维修管理制度规范
- 如何高效备考考研复试
- 走进焊接 课件 2.1百花齐放推陈出新-焊接方法
- (2025)中国汉字听写大赛全部试题库及答案
- 卵巢癌的课件
- 北京市律师协会律师办理法律尽职调查业务操作指引
- (2025年标准)会员销售协议书
- 2025至2030中国专业图片存档和通信系统(PACS)行业项目调研及市场前景预测评估报告
- 妇产科临床路径培训课件
- 编辑出版校对试题及答案
- 2025一级造价工程师《案例分析(土建、安装)》学霸笔记
- 化工仪表基础知识培训课件
- 2025人教版八年级英语上册课文原文及翻译
评论
0/150
提交评论