`
hjsAdc
  • 浏览: 1614 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Callback

阅读更多

jdbcTemplate中Callback的三个实现

     工作中遇到外键关联的联表查询,采用jdbcTemplate的query来实现,需对返回ResutlSet自行进行组装,故研究了下Callback三个接口实现。

     三种实现分别是ResultSetExtracor、RowMapper、RowCallbackHanlder,借用网上的一个例子(查询顾客信息)来阐述用法。   

List<Customer> customerList = (List<Customer>)jdbcTemplate.query("select * from customer", new ResultSetExtractor(){
	
    public Object extractData(ResultSet rs) throws SQLException,DataAccessException {
		List<Customer> customers = new ArrayList<Customer>();
		while(rs.next()){
			Customer customer = new Customer();
			customer.setFirstName(rs.getString("fristname"));
			customer.setLastName(rs.getString("lastname"));

			customers.add(customer);
		}
		return customers;
	});
}
								
List<Customer> customerList = jdbcTemplate.query("select * from customer", new RowMapper(){

	public Object mapRow(ResultSet rs, int rowNumber) throws SQLException {
		Customer customer = new Customer();
		customer.setFirstName(rs.getString("firstname"));
		customer.setLastName(rs.getString("lastname"));

		return customer;
	});
}
								
final List<Customer> customerList = new ArrayList<Customer>();
jdbcTemplate.query("select * from customer", new RowCallbackHandler(){

	public void processRow(ResultSet rs) throws SQLException {
		Customer customer = new Customer();
		customer.setFirstName(rs.getString("firstname"));
		customer.setLastName(rs.getString("lastname"));
		
		customerList.add(customer);
	});
}

     从代码中看,ResultSetExtractor与其他两种方法相比,需自己对结果集遍历,这同时也给了一个权限。游标的位置isBforeFisrt()是true,可通过res.next(),取得所有返回数据;

    RowMapper中的rowMapper是对单条的处理,游标的位置isBeforeFisrt()是false,每一次操作,都对应一条数据,且返回的是每一条处理结果的对象;

    RowCallbackHanlder中的processRow也是对单条处理,游标的位置isBeforeFisrt()是false,因为没有返回值,操作结果只能通过final传回上层。

 

    在联表查询返回时,需对数据重新组装,直接采用ResultSetExtractor可以解决问题,但要注意数据组装的细节。用RowCallbackHanlder也可达到同样的效果,但需采用PreparedStatementCreator,使结果集可回滚,将游标定位到beforeFirst,再通过res.next()处理。

    

分享到:
评论

相关推荐

    用友U9客户化开发 Callback & Postback 入门 v0.8

    用友U9客户化开发 Callback & Postback 入门 v0.8 用友U9客户化开发 Callback & Postback 入门 v0.8 是一份关于用友U9客户化开发中 Callback 和 Postback 的基础知识入门文档。该文档详细介绍了 Callback 和 ...

    详解protobuf-c之在C语言中如何使用repeated生成数组和字符串(包含配置pb-callback-t)

    本篇文章将详细解释如何在C语言环境中使用protobuf-c处理`repeated`字段,创建数组和字符串,并特别关注`pb_callback_t`这一特殊类型。 首先,我们需要理解`repeated`字段在protobuf语义中的含义。在protobuf的定义...

    C++中回调函数(CallBack)的用法分析

    本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...

    Qt使用回调函数方(callback)

    在提供的压缩包文件中,如`mainwindow.cpp`和`main.cpp`,可能包含了具体的信号槽连接示例,而`mainwindow.ui`则是Qt Designer生成的用户界面文件,`callback.pro`和`callback.pro.user`则是项目配置文件,它们共同...

    callback手把手教你写回调函数源代码

    typedef void (*callback_t)(int); ``` 2. **实现回调函数**:接着,定义一个具体的回调函数,实现所需的功能。例如,处理接收到的信号: ```c void handle_signal(int signum) { // 处理信号的逻辑 } ``` ...

    基于鸿洋okhttputils 封装数据 bean和callback 回调

    本主题主要探讨的是如何基于鸿洋的OkHttpUtils进行数据Bean的封装以及Callback回调的处理。 首先,我们来理解一下OkHttpUtils的核心概念。OkHttpUtils提供了一系列静态方法,如`get()`, `post()`等,用于发起HTTP...

    CallBack_DEMO 回调

    回调(Callback)是一种在软件设计模式中常见的编程概念,它允许一个函数或对象在完成某个操作后通知另一个函数或对象。在本示例"CallBack_DEMO"中,我们可能正在探讨如何在Java或其他编程语言中实现回调机制。回调...

    halcon外触发get_framegrabber_callback注册回调函数方法

    本文将详细介绍如何在 C# 环境下利用 Halcon 的外触发机制来实现图像采集,并通过 `get_framegrabber_callback` 函数注册回调函数的方法。 #### 二、Halcon 外触发机制介绍 在实际应用中,很多时候我们需要根据...

    okhttp的两种callback封装

    本文将深入探讨如何利用OkHttp进行网络请求,并封装两种Callback处理方式:一种是返回String类型,后续在子类进行JSON解析;另一种则是直接传入泛型的JavaBean,完成解析后再传回子类。 首先,了解OkHttp的基本用法...

    C# WCF CallBack Demo

    **C# WCF CallBack Demo** Windows Communication Foundation (WCF) 是.NET Framework中用于构建分布式应用程序的服务模型。在WCF中,回调(Callback)是一种高级通信模式,它允许服务主动向客户端发送数据,而不...

    回调技术(CallBack)源码

    回调技术(Callback)是软件设计模式中的一种,它在异步编程或事件驱动编程中扮演着重要角色。回调函数是一种代码执行模式,允许一个函数或方法在特定事件发生时被另一个函数调用。这种机制使得程序能够以非阻塞的...

    VC/C#调用delphi写的dll, 演示如何进行类的传递并callback调用方的代码

    本示例中,我们将探讨如何在VC中调用由Delphi编写的动态链接库(DLL),特别是涉及到类的传递以及回调(callback)机制。在Delphi中创建DLL,然后在VC或C#中调用,可以利用Delphi的强大面向对象特性,并将其集成到...

    Callback数据类型转易语言子程序

    在编程领域,回调函数(Callback)是一种常见的设计模式,它允许我们将一个函数作为参数传递给另一个函数,以便在特定事件发生或某个操作完成后被调用。这种机制在异步编程和事件驱动编程中尤其重要。易语言,是中国...

    unigui_ajax Post Callback -返回参数 HTMLFrame 事件_1

    在“Post Callback”部分,我们讨论的是当Ajax POST请求完成后执行的回调函数。这个回调函数通常用来处理服务器返回的数据,如解析JSON,更新UI,或者处理错误信息。理解如何正确编写和使用回调函数是确保Ajax请求...

    Delphi MIDAS 回调 (CallBack)

    回调(Callback)在MIDAS中扮演了关键角色,它是实现客户端对服务器端数据处理结果的响应机制。 回调机制允许客户端注册一个函数或方法,当服务器完成特定操作后,会调用这个预注册的函数或方法。这样,客户端就能...

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    在ASP.NET 2.0中,引入了一种新的技术,即客户端回调(Client Callback)机制,也称为 Partial Page Rendering 或 UpdatePanel,这使得开发者能够实现无刷新页面更新,提高用户体验。 客户端回调机制的核心是通过...

    VC++ CALLBACK

    **VC++ CALLBACK** 在Microsoft Visual C++(简称VC++)编程中,回调函数是一种机制,允许我们传递一个函数作为参数给另一个函数,然后在需要的时候由这个接收函数调用我们传入的函数。这种功能在处理异步操作、...

    callback与callbout的区别 硬件工程师电路分析物联网模电单片机嵌入式技术.doc

    在物联网和硬件工程领域,尤其是涉及新能源汽车的嵌入式系统设计中,了解回调(callback)和呼叫出(callout)函数的概念及其应用至关重要。AUTOSAR(AUTomotive Open System ARchitecture)是一种开放的汽车行业软件...

    JNI 回调函数 Callback

    回调函数Callback是JNI中一个重要的概念,它使得Java层能够调用C/C++的函数,反之亦然。 **JNI基础** 1. **JNI接口定义**:在Java代码中,通过`native`关键字声明本地方法。这些方法没有具体实现,而是通过JNI接口...

Global site tag (gtag.js) - Google Analytics