`
y806839048
  • 浏览: 1117416 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

回调机制

阅读更多
设计模式


回调机制:

在调用者传入具体的调用接口的的具体实现类,然后调用者调用这个接口



接口

public interface RowMapper<T> {

/**
* Implementations must implement this method to map each row of data
* in the ResultSet. This method should not call {@code next()} on
* the ResultSet; it is only supposed to map values of the current row.
* @param rs the ResultSet to map (pre-initialized for the current row)
* @param rowNum the number of the current row
* @return the result object for the current row
* @throws SQLException if a SQLException is encountered getting
* column values (that is, there's no need to catch SQLException)
*/
T mapRow(ResultSet rs, int rowNum) throws SQLException;

}


调用者
public class RowMapperResultSetExtractor<T> implements ResultSetExtractor<List<T>> {

private final RowMapper<T> rowMapper;

private final int rowsExpected;


/**
* Create a new RowMapperResultSetExtractor.
* @param rowMapper the RowMapper which creates an object for each row
*/
public RowMapperResultSetExtractor(RowMapper<T> rowMapper) {
this(rowMapper, 0);
}

/**
* Create a new RowMapperResultSetExtractor.
* @param rowMapper the RowMapper which creates an object for each row
* @param rowsExpected the number of expected rows
* (just used for optimized collection handling)
*/
public RowMapperResultSetExtractor(RowMapper<T> rowMapper, int rowsExpected) {
Assert.notNull(rowMapper, "RowMapper is required");
this.rowMapper = rowMapper;
this.rowsExpected = rowsExpected;
}


@Override
public List<T> extractData(ResultSet rs) throws SQLException {
List<T> results = (this.rowsExpected > 0 ? new ArrayList<T>(this.rowsExpected) : new ArrayList<T>());
int rowNum = 0;
while (rs.next()) {
results.add(this.rowMapper.mapRow(rs, rowNum++));
}
return results;
}

}

使用回调函数类:
//通过构造方法或set方法////在用的时候具体定型,这样调用者可以公用
new RowMapperResultSetExtractor<T>(rowMapper)

List<TbSettFund> tb= jdbcTemplate.query("select * from tb_sett_fund t where t.sup_acct_id=?", new Object[]{str},new RowMapper(){

@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
// TODO Auto-generated method stub
TbSettFund tb= new TbSettFund();
tb.setSupAcctId(rs.getString("SUP_ACCT_ID"));
tb.setCustFlag(rs.getInt("CUST_FLAG"));
return tb;
}

});




public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {
return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper));
}





参考
http://www.cnblogs.com/lcngu/p/5111066.html

==================================================================================================



调用者:

public <T> T query(
PreparedStatementCreator psc, final PreparedStatementSetter pss, final ResultSetExtractor<T> rse)
throws DataAccessException {

Assert.notNull(rse, "ResultSetExtractor must not be null");
logger.debug("Executing prepared SQL query");

return execute(psc, new PreparedStatementCallback<T>() {
@Override
public T doInPreparedStatement(PreparedStatement ps) throws SQLException {
ResultSet rs = null;
try {
if (pss != null) {
pss.setValues(ps);
}
rs = ps.executeQuery();
ResultSet rsToUse = rs;
if (nativeJdbcExtractor != null) {
rsToUse = nativeJdbcExtractor.getNativeResultSet(rs);
}
return rse.extractData(rsToUse);
}
finally {
JdbcUtils.closeResultSet(rs);
if (pss instanceof ParameterDisposer) {
((ParameterDisposer) pss).cleanupParameters();
}
}
}
});
}


分享到:
评论

相关推荐

    android中的回调机制

    Android 中的回调机制 Android 中的回调机制是一种方法调用机制,类似于 C++ 语言中的指针传递,使其它类或方法掌握另一个类的句柄。Java 中的回调是通过接口或内部类实现的。 回调机制的实现需要两个类和一个接口...

    Java回调机制

    Java回调机制是软件设计模式中的一种,特别是在Java和Android开发中广泛应用。回调允许服务端对象在执行特定操作后,通知并调用客户端对象的方法。这种机制使得程序可以在异步环境中运行,即服务端处理完一个任务后...

    Java基础核心理解+什么是回调即回调机制讲解

    ### Java基础核心理解+什么是回调及回调机制讲解 #### 一、回调机制的引入与应用场景 在软件开发中,特别是面向对象编程语言如Java中,模块间的交互是至关重要的。根据调用方式的不同,可以将模块间的交互分为三种...

    回调机制的实现,主要介绍回调机制的实现过程

    回调机制是一种软件设计模式,它允许一个程序在执行过程中调用另一个程序提供的功能,并且这个被调用的函数会在特定事件发生时返回控制权给原始的调用者。回调机制通常用于异步处理、事件通知、功能扩展等多种场景。...

    Java/Android回调机制小示例

    在编程领域,回调机制是一种常见的设计模式,尤其在Java和Android开发中被广泛使用。回调允许我们定义一种在特定事件发生时执行的代码块,它能够帮助实现异步操作的处理,提高程序的灵活性和可扩展性。在这个“Java/...

    BREW 回调机制

    在BREW(Binary Runtime Environment for Wireless)平台上,回调机制是一种核心机制,它使得开发者能够以异步方式处理各种操作,尤其是涉及到网络通信、定时器或其他需要等待结果的事件。回调机制的关键在于,当...

    handler回调机制 demo

    在Android开发中,Handler回调机制是用于解决线程间通信的核心技术之一,它与Looper和Message紧密相连,共同构建了Android的消息处理系统。本篇将深入解析Handler回调机制,并通过提供的"handler的回调机制"DEMO来...

    回调函数与回调机制.docx

    回调函数和回调机制是软件开发中常用的设计模式,主要用于实现异步操作、事件处理和定制化工作流程。回调函数是一个用户定义的函数,它作为参数传递给另一个函数,由该函数在适当的时间调用。这种设计允许将某些特定...

    java回调机制1

    Java回调机制是一种编程模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在上述例子中,回调机制的概念逐渐展开,通过一个简单的幼儿园加法故事进行解释。 首先,我们有`Student`类,它有一个`fill...

    Java异步回调机制实例解析共5页.pdf.zip

    Java异步回调机制是Java编程中一种常见的处理方式,它主要用于提高程序的执行效率和响应速度,尤其是在处理I/O密集型任务或者网络通信时。在Java中,异步回调允许程序在执行耗时操作时,不阻塞主线程,而是立即返回...

    websocket 实现实时推送的例子(工厂模式,回调机制)

    在这个"WebSocket 实现实时推送的例子(工厂模式,回调机制)"中,我们将深入探讨如何利用WebSocket来构建一个实时推送系统,并结合工厂模式和回调机制来增强其灵活性和可维护性。 首先,让我们了解一下**工厂模式*...

    浅谈JAVA回调机制1

    Java回调机制是一种编程概念,其核心在于一个对象(A)调用另一个对象(B)的方法,而这个方法内部又反过来调用A对象的另一个方法,形成一种链式反应。回调在多线程、异步处理和事件驱动编程中非常常见,因为它允许...

    android回调机制的简单实现demo

    在Android开发中,回调机制是一种常见的事件处理方式,它允许我们定义一个接口或者抽象方法,当特定事件发生时,系统会调用这个接口或方法,从而通知我们的代码进行相应的处理。这里,我们通过一个简单的"android回...

    回调机制及其在Android开发中的应用.pdf

    【回调机制】 回调机制是计算机程序设计中的一种通信机制,它允许被调用的函数或方法反过来调用调用者提供的代码。这种机制在多线程编程、事件驱动编程和异步处理中尤其常见。回调是通过在调用函数时传递一个函数...

    回调机制及其在Android应用开发中的应用.pdf

    【回调机制】 回调机制是软件设计中的一种通信方式,它允许被调用的方法或函数在执行完特定操作后,反过来调用调用者提供的另一个方法。这种双向调用模式在处理异步操作或者需要在特定事件发生时进行响应的场景中...

    Android的回调机制

    详细介绍Android的回调机制,例举了大量的实例,有助于初学者的学习

    利用同步回调机制攻击Android的系统服务和应用.pdf

    在Android系统中,同步回调机制是一种常见的组件交互方式,它允许应用程序和服务之间进行通信和数据交换。然而,这种机制也可能成为安全漏洞的来源,因为恶意攻击者可以利用它来对系统服务和应用进行攻击。本文将...

    两个经典例子让你彻底理解java回调机制(csdn)————程序.pdf

    Java回调机制是一种编程模式,它允许一个对象在另一个对象完成特定操作后被通知或调用。这种机制在软件设计中非常常见,特别是在处理异步操作和事件驱动编程中。通过回调,一个对象(调用者)可以注册一个回调函数或...

Global site tag (gtag.js) - Google Analytics