`
guanpanpan
  • 浏览: 16719 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

代码实例-设计模式-回调方式使用模板方法

 
阅读更多

批量更新数据


/**
 * 批量更新数据
 * @author guanpanpan
 *
 * @param <T>
 */
public abstract class BatchUpdate<T> {
	public final static Logger log = LoggerFactory.getLogger(BatchUpdate.class);

	public void execute(DB db, Collection<T> datas) throws SQLException {
		if (datas == null || datas.size() == 0) {
			return;
		}
		int dealSize = 0;
		try {
			db.startTranAndBatch();
			for (T data : datas) {
				updateToDb(db, data);
				dealSize++;
				if (dealSize >= DcConst.BANTCH_COMIT_SIZE) {
					dealSize = 0;
					db.exeBatchAndCommitTrans();
				}
			}
			if (dealSize > 0) {
				db.exeBatchAndCommitTrans();
			}

		} catch (SQLException e) {
			log.error("updatedatas To Db error:", e);
			throw e;
		} finally {
			try {
				db.endTransaction();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
	}

	public abstract void updateToDb(DB db, T data) throws SQLException;
}

 

		new BatchUpdate<Integer>() {
			@Override
			public void updateToDb(DB db, Integer data) throws SQLException {
				Map<String, Object> parameterMap = new HashMap<String, Object>();
				parameterMap.put("id", data);
				parameterMap.put("oldTaskStatus", oldStatus);
				parameterMap.put("taskStatus", newStatus);
				db.getSqlMapClient().update("ChangeLog.updateChangeLogStatusById", parameterMap);
			}
		}.execute(getDb(dbNo), ids);

 

 

其它相关代码(ibatis-SqlMapClient client)

	public void startTranAndBatch() throws SQLException {
		client.startTransaction();
		client.startBatch();
	}
	public void exeBatchAndCommitTrans() throws SQLException {
		client.executeBatch();
		client.commitTransaction();
	}
	public void endTransaction() throws SQLException {
		client.endTransaction();
	}

 

分享到:
评论

相关推荐

    59丨模板模式(下):模板模式与Callback回调函数有何区别和联系?1

    回调函数和模板模式都是软件设计中用于实现代码复用和扩展的重要工具,它们在不同的场景下各有优势。模板模式是一种行为设计模式,它定义了一组操作的算法骨架,同时允许子类在某些步骤中替换具体行为。而回调则是...

    Spring 学习 JdbcTemplate,模板模式,回调

    模板模式是一种设计模式,它定义了算法的骨架,允许子类在不改变算法结构的情况下重写特定步骤。在Spring中,JdbcTemplate就是一个典型的模板类,它实现了数据库操作的基本流程,如创建Connection、...

    C++回调模板类的例子

    下面是一个简单的回调模板类的实现: ```cpp template class CallbackWrapper { public: CallbackWrapper(CallbackType callback) : _callback(callback) {} void invoke() { _callback(); } private: ...

    HibernateTemplate原理代码-模版设计模式

    在这样的背景下,HibernateTemplate应运而生,它采用模板设计模式,通过提供一系列通用的数据库操作方法,简化了Hibernate的使用方式,使得开发者能够更加专注于业务逻辑的实现。 #### 二、模板设计模式简介 模板...

    模板设计模式_构建公共通用的Dao

    3. **钩子方法(Hook Method)**:这些是可选的回调方法,子类可以决定是否覆盖它们。在模板方法中,钩子方法可能被调用,以便在特定步骤执行前后插入自定义逻辑。 4. **具体类(Concrete Classes)**:实现抽象类...

    headfirst设计模式C++代码实现

    《Head First设计模式C++代码实现》是一本深入浅出介绍设计模式的书籍,它以C++编程语言为载体,帮助读者理解并掌握设计模式这一软件工程中的重要概念。设计模式是解决软件开发中常见问题的经验总结,是成熟、可复用...

    使用C语言实现23种设计模式。.zip

    这个压缩包“使用C语言实现23种设计模式”可能包含了将经典的Java或C++设计模式转换为C语言形式的示例代码。 23种设计模式主要分为三大类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:确保一个类...

    C++中回调(CallBack)的使用思路

    为了克服上述局限性,可以考虑使用模板化的方法来设计回调对象。这种方式不仅可以提高类型安全性,还能增强代码的可读性和可维护性。 ##### 1. 模板化回调对象的设计 下面是一个具体的模板化回调对象的设计示例,...

    C++设计模式代码资源1.zip

    "C++设计模式代码资源1.zip"是一个包含C++实现设计模式的代码库,它可以帮助我们深入理解并应用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在C++中,可以通过懒汉式(延迟初始化)或...

    c和c++代码精粹--优秀的代码

    - **lambda表达式**:简洁地定义匿名函数,方便编写回调函数和算法。 - **范围for循环**:简化遍历容器元素的代码,如`for (auto& elem : container) { ... }`。 - **类型推断**:using关键字和auto类型推断,...

    模板方法Demo

    在《Android源码设计模式解析与实战 15章》中,作者可能详细解释了模板方法在Android框架中的应用,以及如何在实际项目中利用模板方法模式来优化代码结构和提高代码质量。通过对Depat等示例的分析,读者可以更好地...

    设计模式C++设计模式代码

    在软件开发领域,设计模式是经验丰富的开发者们总结出的解决常见问题的模板或最佳实践。C++作为一种强类型、静态编译的面向对象语言,广泛应用在各种复杂系统中,设计模式对于编写可维护、可扩展的C++代码至关重要。...

    C#设计模式代码

    在编程领域,设计模式是一种被广泛认可的解决常见问题的最佳实践。...同时,深入理解委托的本质也是C#编程中的重要一环,委托可以作为方法的引用,支持事件处理和回调函数,是C#中实现异步编程和高阶函数的关键工具。

    java 23种设计模式 下载

    设计模式并不是具体的代码或库,而是描述在特定情况下如何设计软件组件的一种通用语言。它们是经验丰富的开发者们在解决实际问题时积累的最佳实践,经过时间的检验,已被证明是有效的。 以下是这23种设计模式的简要...

    回调函数,使用c++做的例子

    ### 回调函数在C++中的应用实例 #### 一、引言 在软件开发过程中,回调函数是一种非常实用的设计模式。它允许我们传递一个函数作为参数到另...掌握了回调函数的使用方法后,开发者可以更加高效地编写出高质量的代码。

    C嵌入式编程设计模式例程-2

    在C语言中,可以使用函数指针或者回调函数来实现类似的功能,适用于动态选择不同类型的对象实例。 3. **观察者模式**:定义对象间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动...

    go语言设计模式待代码简单实现

    1. 工厂模式:工厂模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。在Go语言中,可以通过定义一个工厂函数,根据输入参数返回不同类型的实例,避免了硬编码和紧密耦合。 2. 单例模式:确保一个类只有...

    火山PC内存加载dll及静态方法参数回调函数

    参数回调函数是一种设计模式,它允许我们将一个函数作为参数传递给另一个函数。在火山PC的上下文中,这可能用于实现用户自定义的行为,比如在调用DLL中的函数时,根据某些条件执行特定的操作。回调函数通常以指针...

    《Android 源码设计模式解析与实战》示例代码-android_dp_analysis_code.zip

    Activity的生命周期回调方法就是一个模板方法的实例。 10. **职责链模式** (Chain of Responsibility): 在处理请求时,允许将请求沿着处理者链传递,直到找到合适的处理者。比如Android的触摸事件分发机制。 在`...

Global site tag (gtag.js) - Google Analytics