package com.huawei.common;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
* 回调函数
* @author Administrator
*
*/
public interface CallBack {

void execute(ResultSet rs) throws SQLException;

}

package com.huawei.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.huawei.common.CallBack;
import com.huawei.po.City;
import com.huawei.po.Province;
import com.huawei.utils.DBUtil;

public class CascadeDAO2 {

public void findAll(String sql,Object[] params,CallBack callBack){
Connection connection = DBUtil.getConnection();

PreparedStatement ps = null;

ResultSet rs = null;

try {
ps = connection.prepareStatement(sql);
if(params!=null && params.length>0){
for(int i=0;i<params.length;i++){
//设置参数
ps.setObject(i+1, params[i]);
}
}
rs = ps.executeQuery();

//需要动态的加入一段代码执行
callBack.execute(rs);

} catch (SQLException e) {
e.printStackTrace();
}finally{
DBUtil.close(rs,ps,connection);
}
}

public List<Province> findAllProvince(){

final List<Province> provinces = new ArrayList<Province>();
//final String [] values = new String[]{""};
//final String a = "123";

//String s = "select * from city where provinceID=?"; new Object[]{}

String sql = "SELECT * FROM province";
this.findAll(sql, null,new CallBack() {

@Override
public void execute(ResultSet rs) throws SQLException {

while(rs.next()){
provinces.add(new Province(rs.getInt("provinceID"), rs.getString("province")));
}
//String abc = "lsi123";
//values[0] = abc;
}
});

return provinces;
}

public List<City> findCityByProvinceID(Integer id){
final List<City> cities = new ArrayList<City>();
String sql = "select * from city where provinceID=?";
this.findAll(sql, new Object[]{id}, new CallBack() {

@Override
public void execute(ResultSet rs) throws SQLException {
while(rs.next()){
cities.add(new City(rs.getInt("cityID"),rs.getString("city")));
}
}
});
return cities;
}

public static void main(String[] args) {
System.out.println(new CascadeDAO2().findAllProvince().size());
System.out.println(new CascadeDAO2().findCityByProvinceID(510000).size());

}

}

java中回调函数的使用的更多相关文章

  1. java中回调函数的理解

    一,案例一 "通常大家说的回调函数一般就是按照别人(李四)的定好的接口规范写,等待别人(张三)调用的函数,在C语言中,回调函数通常通过函数指针来传递:在Java中,通常就是编写另外一个类或类 ...

  2. Java中回调函数编写

    package XXX.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...

  3. C++中回调函数(CallBack)的使用

    如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而 ...

  4. java基础-回调函数(callback)

    java基础-回调函数(callback) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数 ...

  5. $.getJSON('url',function(data){}) 中回调函数不执行

    $.getJSON('url',function(data){}) 中回调函数不执行 url 中的 json 格式不正确 ,浏览器返回并没有报错 {'湖北':[114.11438,30.849429] ...

  6. 关于C++与Java中虚函数问题的读书笔记

    之前一直用C++编程,对虚函数还是一些较为肤浅的理解.可近期由于某些原因搞了下Java,发现有些知识点不熟,于是站在先驱巨人的肩上谈谈C++与Java中虚函数问题. Java中的虚函数 以下是段别人的 ...

  7. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

  8. Java中的函数对象

    初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...

  9. Windows编程中回调函数的使用心得(MFC篇)

    回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定 ...

随机推荐

  1. BZOJ2958 序列染色

    果然清华集训的题目...显然的DP题但是不会做... 我们令f[i][j][w]表示状态方程 w表示到了字符串的第w个 i = 0, 1, 2分别表示k个B和k个W都没填上.k个B填上了k个W没填上. ...

  2. iOS面试准备之思维导图(转)

    以思维导图的方式对iOS常见的面试题知识点进行梳理复习. 目录 1.UI视图相关面试问题 2.Runtime相关面试问题 3.内存管理相关面试问题 4.Block相关面试问题 5.多线程相关面试问题 ...

  3. pshell远程连接服务器

    在页面添加ip    和 端口  还有 用户,我这里填的是服务器root用户 成功之后 端口后是可以改的   首先看下ssh是否启动  rpm -qa | grep ssh 有的话就是vi /etc/ ...

  4. trello 项目管理开启卡片图片显示

    /********************************************************************************* * trello 项目管理开启卡片 ...

  5. mybatis异常:Could not find result map Java.util.Map 问题分析及解决 定位不到具体的位置的错误

    mybatis异常:Could not find result map Java.util.Map 问题分析及解决 报这个错误呢,很难受的就是你定位不到具体的地方,找不到位置修改,你只知道有错误,但是 ...

  6. python3文件操作方法

    在python3中,我们可以使用open打开一个文件,那么打开文件后,文件有什么操作方法呢?接下来我就记录一下比较常用的方法. 1. close() 关闭打开的文件 2. fileno() 返回文件句 ...

  7. Hibernate环境搭建+struts整合

    说明:本文档,是和struts2+hibernate的整合示例. lib下还有struts2的jar包,本示例没有显示.struts2的搭建参考struts2的环境搭建 一下载hibernate的ja ...

  8. test20181024 hao

    题意 分析 考场10分 直接\(O(nm)\)模拟即可. #include<cstdlib> #include<cstdio> #include<cmath> #i ...

  9. lua 二进制函数使用

    由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个"bit"表中,使用时 ...

  10. 项目管理软件选择:redmine or JIRA

    个人理解,这两款软件从本质上说是issue tracking,而不是项目管理. 先说些个人的想法 1)从现阶段情况看,都是够用的,毕竟本来就是小团队 2)从扩展而言,根据现在团队的实际情况(基本都是搞 ...