以JDBC的回调函数操作为例:
1、定义一个回调函数接口:用于收集查询结果并转换成实体
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public interface ResultSetCall<T> {
public List<T> getList(ResultSet resultSet) throws SQLException;
}
2、定义一个参数回调接口和默认实现类,用于填充参数
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public interface PrepareStatementCall {
public PreparedStatement getPrepareStatement(Connection con, String sql, Object[] params) throws SQLException;
}
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DefaultPrepareStatementCall implements PrepareStatementCall{
@Override
public PreparedStatement getPrepareStatement(Connection con, String sql, Object[] params) throws SQLException {
CallableStatement pre = con.prepareCall(sql);
for(int i=0;i<params.length;i++){
pre.setObject(i+1, params[i]);
}
return pre;
}
}
3、调用Dao:
public abstract class BaseDao<T> {
protected DataSource dataSource;
private PrepareStatementCall call = new DefaultPrepareStatementCall();
public List<T> queryList(String sql, Object[] params, PrepareStatementCall call, ResultSetCall<T> resultSetCall){
Connection con = null;
PreparedStatement pre = null;
ResultSet set = null;
List<T> rs = null;
try {
con = dataSource.getConnection();
pre = call.getPrepareStatement(con, sql, params);
set = pre.executeQuery();
rs = resultSetCall.getList(set);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.colseResultSet(set);
this.colsePreparedStatement(pre);
this.colseConnection(con);
}
return rs;
}
4、调用示例:
List<CompleteTask> rs = super.queryList(COMPLETE_NEW_SQL, new Object[]{waybillStatus, eachFetchDataNum}, new ResultSetCall<CompleteTask>(){
@Override
public List<CompleteTask> getList(ResultSet set) throws SQLException {
List<CompleteTask> rs = new ArrayList<CompleteTask>();
while(set.next()){
CompleteTask task = new CompleteTask();
task.setTaskId(<span style="font-family: Arial, Helvetica, sans-serif;">set.getInt("taskId")</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
task.setTaskType(<span style="font-family: Arial, Helvetica, sans-serif;">set.getInt("taskType")</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return rs;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
</span>
分享到:
相关推荐
主要介绍了Java回调函数实例代码详解,需要的朋友可以参考下
这个程序是我在理解回调函数时编写的一个Demo. 里面包含了三部分: 1.回调函数 2.观察者模式 3.代理模式 配套有CSDN博文:关于回调函数的理解,以及观察者模式,代理模式
实例:移动web页的代码页类MobileDefault的Page_Init事件过程,包含的InitializeComponent()连续出现了两次并被执行了两次,而InitializeComponent()函数内包含有事件预订语句,这些事件预订语句同时被执行了两次,...
Java回调函数的理解。通过在Android小程序下运行一个Java回调程序。代码内部有简单讲解。
亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。
主要介绍了Java回调函数与观察者模式实例代码,简单介绍了使用观察者模式的场景,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了Java 回调函数详解及使用,附有简单实例,需要的朋友可以参考下
主要介绍了Java通过匿名类来实现回调函数的例子,回调函数就是一种函数签名(若干个输入参数、一个输出参数)的规范,java虽不存在函数声明,但是java可以用接口来强制规范。具体操作步骤大家可查看下文的详细讲解,...
主要介绍了C#中异步回调函数用法,实例分析了异步回调函数的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
java回调机制: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。 >同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用; >回 调:一种...
本文实例讲述了Android编程之匿名内部类与回调函数用法。分享给大家供大家参考,具体如下: 我们Android开发中经常用到一些匿名内部类,及其其中的回调函数,例如,我们给Button设置监听器时候通常要实现...
本文实例讲述了PHP回调函数及匿名函数概念与用法。分享给大家供大家参考,具体如下: 1、回调函数 PHP的回调函数其实和C、Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回...
实例中演示了各种参数形式的DLL函数调用,如:基本数据类型、基本数据类型的指针和引用、结构体、结构体的指针和引用、函数指针和回调函数、字符串指针、输入数组、输出数组等,非常实用。
4、JS回调函数中能够接收java返回的复杂对象:java中可以返回复杂的对象, 比如Map、List,在javascript中对应为Object和Array 5、友好逐行数据输出并回调:java中可以将List逐行输出到浏览器中, 框架每接收到一条...
本文实例讲述了javascript回调函数的概念理解与用法。分享给大家供大家参考,具体如下: 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就...
本文实例讲述了javascript带回调函数的异步脚本载入方法。分享给大家供大家参考。具体实现方法如下: var Loader = function () { } Loader.prototype = { require: function (scripts, callback) { this....
impRecall.java 实现回调函数 inheritConstruct_1.java 构造器继承示例1 inheritConstruct_2.java 构造器继承示例2 inheritConstruct_3.java 构造器继承示例3 inheritConstruct_4.java 构造器继承示例4 ...
什么是Java中的生命周期回调方法?列举一些常见的生命周期回调方法。 什么是Java中的注解处理器?如何自定义和使用注解处理器? 什么是Java中的并发编程?列举一些常见的并发类和工具。 什么是Java中的线程池?...