㈠ 加载iBatis 配置文件与映射文件:
加载配置文件:
① String resource = "sqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(reader);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(reader);
② String resource = "sqlMapConfig.properties";
Properties props = Resources.getResourceAsProperties(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(props);
③ String resource = "sqlMapConfig.xml";
Stream stream = Resources.getResourceAsStream(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(stream);
④ String resource = "sqlMapConfig.xml";
File file = Resources.getResourceAsFile(resource);
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(file);
㈡ 数据更新:
插入:public int insert(String statementName,Object parameterObject) throws SQLException.
更新:public int update(String statementName,Object parameterObject) throws SQLException.
删除:public int delete(String statementName,Object parameterObject) throws SQLException.
例:sqlMapClient.startTransaction();
User user = new User();
user.setId(100);
user.setUsername("joe");
user.setPassword("123");
user.setEmail("joe@163.com");
int rows = sqlMapClient.insert("users.insertUser",user);//users映射文件namespace值,insertUser映射文件insert的id值
sqlMapClient.commitTransaction();
㈢ 数据查询:
① 查询结果返回一个对象
public Object queryForObject(String statementName,Object parameterObject) throws SQLException.
public Object queryForObject(String statementName,Object parameterObject,Object resultObject) throws SQLException
例:sqlMapClient.startTransaction();
Integer id = new Integer(100);
User user = (User)sqlMapClient.queryForObject("users.getUser",id);
sqlMapClient.commitTransaction();
② 查询结果放入List中
public List queryForList(String statementName,Object parameterObject) throws SQLException.
public List queryForList(String statementName,Object parameterObject,int skipResults,int maxResults) throws SQLException.
public List queryForList(String statementName,Object parameterObject,RowHandler rowHandler) throws SQLException.
例:sqlMapClient.startTransaction();
List list = sqlMapClient.queryForList("users.getUserList",null);
sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
List list = sqlMapClient.queryForList("users.getUserList",null,0,40);
sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
Rowhandler rowhandler = new MyRowHandler();
List list = sqlMapClient.queryForList("users.getUserList",null,rowhandler );
sqlMapList.commitTransaction();
public class MyRowHandler implements RowHandler{
public void handlerRow(Object obj,List list) throws SQLException{
User user = (User)obj;
user.setPassword("123");
sqlMapClient.update("users.updateUser",user);
}
}
③ 分页查询
public PaginatedList queryForPaginatedList(String statementName,Object parameterObject,int pageSize) throws SQLException.
例:PaginatedList list = sqlMapClient.queryForPaginatedList("users.getUserList",null,10);
list.nextPage(); //下一页
list.previous(); //前一页
list.isFirstPage(); //是否是首页
list.isMiddlePage(); //是否是中间页
list.isLastPage(); //是否是最后一页
list.isPreviousPageAvaliable(); //是否有前一页
list.getPageIndex(); //获得当前页码
list.getPageSize(); //获得页面大小。
④ 查询结果放入Map中
public Map queryForMap(String statementName,Object parameterObject,String keyProperty) thorws SQLException.
public Map queryForMap(String statementName,Object parameterObject,String keyProperty,String valueProperty) thorwsSQLException.
例:sqlMapClient.startTransaction();
Map map = sqlMapClient.queryForMap("users.getUserList",null,"id");
sqlMapClient.commitTransaction();
User user = (User)map.get(100);
⑤ 批量处理(insert/update/delete)
sqlMapClient.startBatch();
//...execute statements
sqlMapClient.executeBatch();
事务管理
public void startTransaction() throws SQLException //开始事务
public void commitTransaction() throws SQLException //提交事务
public void rollbackTransaction() throws SQLException //回滚事务
public void endTransaction() throws SQLException //结束事务
注:对每个SqlMapClient实例,一个线程最多只能打开一个事务。
使用自动事务
如果没有使用startTransaction()、commitTransaction()、rollbackTransaction()方法明确地划分事务范围,事务将自动执行。不建议使用。
使用全局事务
全局事务也叫分布式事务,它可以允许在同一事务中更新多个数据库,即同时成功或失败。全局事务即可以手工管理,也可以有框架来管理。
使用手工来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为EXTERNAL。
使用框架来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为JTA。
例:try{
sqlMapClient.startTransaction();
sqlMapClient0.startTransaction();
sqlMapClient.insert(...);
sqlMapClient0.update(...);
sqlMapClient0.commitTransaction();
sqlMapClient.commitTransaction();
}finally{
try{
sqlMapClient0.endTransaction();
}finally{
sqlMapClient.endTransaction();
}
}
相关推荐
通过这个简单的示例,我们可以了解到iBATIS如何配置数据源、设置行为以及定义SQL映射。在实际项目中,可以根据需求进行更复杂的配置,如使用连接池、配置缓存策略、处理复杂查询等。同时,iBATIS还支持动态SQL,使得...
这个"iBatis经典示例"包含了该框架的核心功能演示,包括基本的增删改查操作,以及参数映射的内外部实现,是学习和理解iBatis功能的绝佳材料。 首先,我们来看增删改查(CRUD)操作。在数据库编程中,这四类操作是最...
Ibatis,作为一个轻量级的Java持久层框架,因其简单易用、灵活性高而备受开发者喜爱。在这个示例项目中,我们将探讨Ibatis的核心概念,包括SQL映射文件、动态SQL、事务管理以及如何将Ibatis与Spring框架整合,以实现...
iBatis 3.0引入了Executor执行器,包括SimpleExecutor、ReuseExecutor和BatchExecutor,分别对应简单执行、重用Statement和批量操作,提供了不同的性能优化策略。 6. **缓存机制** iBatis支持本地缓存和二级缓存...
本资料包"ibatis开发资料及简单示例"显然是为了帮助开发者快速入门和理解Ibatis的工作原理和使用方法。其中包含的JAR包可能是Ibatis的核心库和其他相关依赖,这些库文件是运行Ibatis项目所必需的。 首先,我们来...
3. **simple_example** - 这可能是一个包含 iBATIS 简单示例代码的目录,帮助开发者了解如何快速上手使用 iBATIS。 4. **jar-dependencies.txt** - 这个文件很可能列出 iBATIS 2.3.4.726 所需的外部 JAR 文件依赖,...
自己写的ibatis例子,可以用来入门,也可以学习一下配置文件的配置方法,程序中对可以Student表进行增删改查,自己也可以根据需要添加新的方法,里面有源码和数据库脚本。有需要的,可以下过来看看。
在"Struts2+spring+ibatis简单整合示例"中,主要涉及以下步骤: 1. **配置环境**:首先确保你的开发环境中已经安装了JDK、Tomcat、Maven或Gradle等必要工具,并且配置了相应的环境变量。 2. **创建项目**:创建一...
在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...
5. **参数映射**:iBatis支持简单的类型转换和复杂的Map对象映射。例如,使用#{param}语法将Java对象的属性值映射到SQL的占位符。 6. **结果映射**:当查询结果复杂时,可以定义结果映射来处理一对一、一对多、多对...
Ibatis的主要目标是简化数据访问层的实现,使得数据库操作更为简单、灵活。 描述中提到的“博文链接:https://itsoul.iteye.com/blog/1407786” 提供了一个外部资源,可能包含了对Ibatis API的详细解析和实用示例。...
在Java Web开发中,Struts2和iBatis是两个非常重要的框架。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理HTTP请求和控制应用程序流程,而iBatis则是一个持久层框架,它将SQL语句与Java代码...
这个入门示例展示了如何简单地实现CRUD功能,但Ibatis的功能远不止这些,它还支持存储过程、结果集映射、自定义类型处理器等多种高级特性,使得数据库操作更加灵活和高效。在实际项目中,根据需求和团队习惯,选择...
iBATIS是一个开源的Java框架,它为数据库访问提供了一个简单而强大的解决方案。这个框架的主要目的是将SQL语句与Java代码分离,使开发者能够编写可维护的、灵活的数据库操作代码,而无需处理传统的JDBC API。iBATIS...
**标题:“iBATIS简单例子”** iBATIS是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而避免了Java代码与SQL的耦合,提高了开发效率。在这个简单的例子中,我们将深入理解iBATIS的基本...
这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的示例。以下是关于这三个框架及其整合方式的详细说明: **WebWork**: WebWork是一个轻量级的MVC(模型-视图-控制器)...
【标题】:Ibatis2.0注解示例 【描述】:本教程将指导您如何构建一个基于注解的Spring 2.5、Struts2和Ibatis2的集成框架。 【标签】:java、ssi(Spring+Struts+Ibatis)、ibatis2 【部分内容】: 构建SSI...
这个"最简单的iBatis入门例子"将引领我们逐步理解并掌握iBatis的核心概念和基本用法。 首先,我们需要了解iBatis的基本架构。iBatis主要由三部分组成:配置文件(ibatis-config.xml)、映射文件(mapper.xml)和...
通过以上步骤,你已经掌握了iBatis的基本使用,能够进行简单的增删改查操作。在实际开发中,还可以结合Spring等框架,进一步提高开发效率和代码质量。记住,理解iBatis的核心思想——SQL与Java代码的分离,有助于更...