storeSqlMap.commitTransaction();
orderSqlMap.commitTransaction();
} finally {
try {
storeSqlMap.endTransaction()
} finally {
orderSqlMap.endTransaction()
}
}
上面的例子中,假设我们通过两个SqlMapClient来使用两个不同的数据库。第一个开始事务的SqlMapClient(orderSqlMap)同时也开始了一个全局事务。在这之后,所有其他的操作将被看作是这个全局事务的一部分,直到同一个SqlMapClient(orderSqlMap)调用commitTransaction()或rollbackTransaction(),届时全局事务被提交并完成其他所有的操作。
警告!虽然这些看起来很简单,但记住不要滥用全局(分布式)事务,这点很重要。这样做既有性能方面的考虑,同时也是因为全局事务会让应用服务器和数据库驱动程序的设置变得更复杂。虽然看起来简单,您可能还是会遇到一些困难。记住,EJB拥有更多厂商和工具支持。对于需要分布式事务的应用,最好还是使用Session EJB。在www.ibatis.com的JPetstore,就是一个使用SQL Map全局事务的例子。
批处理
如果要执行很多非查询(insert/update/delete)的语句,您可能喜欢将它们作为一个批处理来执行,以减少网络通讯流量,并让JDBC Driver进行优化(例如压缩)。SQL Map API使用批处理很简单,可以使用两个简单的方法划分批处理的边界:
sqlMap.startBatch();
//…execute statements in between
sqlMap.executeBatch();
当调用endBatch()方法时,所有的批处理语句将通过JDBC Driver来执行。
用SqlMapClient执行SQL语句
SqlMapCient类提供了执行所有mapped statement的API。这些方法如下:
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
public Object queryForObject(String statementName,
Object parameterObject)
throws SQLException
public Object queryForObject(String statementName,
Object parameterObject, Object resultObject)
throws SQLException
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
public PaginatedList queryForPaginatedList(String statementName,
Object parameterObject, int pageSize)
throws SQLException
public Map queryForMap (String statementName, Object parameterObject,
String keyProperty)
throws SQLException
public Map queryForMap (String statementName, Object parameterObject,
String keyProperty, String valueProperty)
throws SQLException
在上面的每个方法中,Mapped Statement的名称作为第一个参数。这个名称要对应<statement>的名称属性。另外,第二个参数总是参数对象。如果不需要参数对象,可以为null。除了这些之外,上面的方法就没有相同的了。下面简单地介绍一下它们的不同之处。
分享到:
相关推荐
"教程"标签则暗示了这些代码不仅可供参考,还可能带有详细的注释和解释,便于自学和教学。"代码"标签则明确指出这是编程实现,而非理论文档。 压缩包内的"实验示例"文件名表明,这些代码可能来源于实验室环境,是...
【标题】"实例代码.Rar" 是一个包含ASP.NET网站设计实例源代码的压缩文件,提供了实际操作中的应用示例,对于学习和理解ASP.NET技术非常有帮助。 【描述】"ASP.NET 网站设计实例通 实例代码.Rar" 提示这个压缩包...
压缩包中的"C#网络编程_PPT"可能是一个包含教程讲解的PowerPoint演示文稿,其中可能包含了详细的概念解释、步骤说明以及代码示例的分析。通过PPT,你可以系统地学习网络编程的各个方面,从基础知识到高级技术,如套...
【标题】:“部分标签文档实例解释说明” 这篇文档主要针对的是如何理解和运用“部分标签”这一概念,这在编程和网站开发中是非常重要的一个部分。部分标签,通常指的是在网页模板或者应用程序中,用于组合和复用...
标题 "C#分词程序源代码实例" 涉及的核心知识点主要集中在C#编程语言、文本处理和分词算法上。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows平台上的软件开发,包括桌面应用、Web应用以及游戏开发...
1. **程序使用说明.doc**:这通常是一个文档,详细解释了如何使用这些实例代码,包括可能的输入、预期的输出以及执行步骤。阅读这个文档将帮助用户更好地理解每个示例的目的和操作方式。 2. **Desktop_.ini**:这是...
【标签】:“网盘地址”标签提示我们,这些小游戏实例代码是通过网络云存储服务进行分发的,可能是为了方便用户快速下载和分享。通常,这样的资源可能会包含多个文件夹,分别对应不同游戏项目,每个项目下会有相关的...
【标题】"源代码-生成柱状图实例代码.zip" 提供的是一个使用ASP(Active Server Pages)技术生成柱状图的源代码示例。在ASP中,我们通常利用服务器端脚本语言如VBScript或JScript来动态生成网页内容。在本案例中,这...
以下是这九个内置对象的详细说明,以及如何在实际开发中使用它们: 1. **pageContext对象**: - `PageContext`对象提供对整个JSP页面的访问,可以获取其他所有内置对象的引用,也可以用来存储页面级的数据。 - ...
### PHPCMS标签的详细说明 #### 中文标签 PHPCMS系统为了简化模板的制作流程及提升用户体验,引入了中文标签的概念。这种标签模式相较于早期版本中的长标签调用方式更加直观易懂,降低了非专业技术人员制作模板的...
标题中的“下载进度条实例+代码+说明”指的是一个实现下载功能并带有进度显示的程序示例,通常在开发过程中,这种组件用于提供用户友好的界面,让用户了解文件下载的状态。这种实例对于开发者来说非常有价值,因为它...
此外,它还提到包含了开发文档,这意味着除了源代码外,还有详细的步骤说明、功能解释以及可能的调试和优化指南,帮助学习者理解和实现这些代码。 【标签】"计算机网络"表明这些代码涉及到网络通信,即如何通过HTTP...
标题中的“JAVA编程经典实例100个[源代码]”指的是这是一份包含100个Java编程的经典示例的资源包,其中包含了源代码,可以帮助学习者深入理解和掌握Java编程语言的各种核心概念和应用。 描述部分提到,每个实例目录...
"源代码"标签表明这个压缩包包含了实现这些功能的实际代码。在www.maoyeah.com.txt、maoyeah和maoyeah_com这三个文件中,可能包含了关于如何使用这些对话框实例的说明、示例代码或者可能是实际的源码文件。`...
标题中的"COM编程精彩实例 代码"意味着这个压缩包包含了使用COM技术的多个实例代码,这些实例可能是解决特定问题或展示特定功能的。通过分析和学习这些实例,开发者可以深入理解COM组件的创建、注册、调用以及它们...
标题中的"PHP导入和导出CSV EXCEL实例代码"指的是使用PHP编写程序,实现对CSV(逗号分隔值)和Excel文件的数据处理。CSV格式是一种简单且通用的数据交换格式,而Excel文件(通常是.xlsx或.xls格式)通常用于更复杂的...
“程序代码”明确了这是关于编程实现的,而“滤波”则说明了代码的核心功能是对信号进行滤波处理,可能包括低通、高通、带通或带阻滤波。 从“压缩包子文件的文件名称列表”来看,只有一个文件名为"FIR",这可能是...
QT4 GUI(图形用户界面)实例代码是一套用于学习和实践C++ GUI编程的资源,特别适合初学者。QT4是Qt库的一个版本,它是一个跨平台的应用程序开发框架,支持Windows、Linux、Mac OS X等多种操作系统。通过QT4,开发者...
本教程将深入探讨XHTML布局实例,通过具体的代码示例来帮助Java学习者更好地理解网页设计的基础。 XHTML布局的核心在于对元素的精确控制,它强调语义化标签的使用,这有助于搜索引擎优化和无障碍访问。例如,`<div>...
【标签】"top2812 官方 实例 源代码"进一步巩固了我们的理解,即这个资源主要围绕"top2812"进行,包含了官方支持的实例和源代码,适合开发者进行学习和调试。 【压缩包子文件的文件名称列表】:TOP2812_CODE可能...