国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java—回調在QueryRunner中的應用(45)

2019-11-14 23:54:19
字體:
來源:轉載
供稿:網友
java—回調在QueryRunner中的應用(45)

第一步:實現一個調用類:

/**

* 有回調的查詢

*/

public <T> T query(String sql,MyHandler<T> mh){

T t = null;

//聲明conn

Connection con = null;

try{

con = ds.getConnection();

//執行查詢

Statement st = con.createStatement();

ResultSet rs = st.executeQuery(sql);

//讓回調去執行數據封裝

t = mh.handler(rs);

}catch(Exception e){

e.PRintStackTrace();

}finally{

try {

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return t;

}

第二步:定義回調規范

package cn.itcast.dbutils;

import java.sql.ResultSet;

/**

* 接收rs結果集

* @author Administrator

*

* @param <T>

*/

public interface MyHandler<T> {

T handler(ResultSet rs);

}

第三步:實現一個回調

package cn.itcast.dbutils;

import java.lang.reflect.Method;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.util.ArrayList;

import java.util.List;

public class MyBeanListHandler<T> implements MyHandler<List<T>> {

private Class<T> cls;

public MyBeanListHandler(Class<T> cls) {

this.cls=cls;

}

public List<T> handler(ResultSet rs) {

List<T> list = new ArrayList<T>();

try{

ResultSetMetaData rsmd = rs.getMetaData();

int cols = rsmd.getColumnCount();

while(rs.next()){

T t = cls.newInstance();

//獲取列名

for(int i=0;i<cols;i++){

String colName = rsmd.getColumnName(i+1);

String methodName =

"set"+colName.substring(0,1)

.toUpperCase()

+colName.substring(1).toLowerCase();

//獲取類型

String javaType = rsmd.getColumnClassName(i+1);//="java.lang.String";

try{

Method mm =

cls.getMethod(methodName, Class.forName(javaType));

Object val = rs.getObject(i+1);

mm.invoke(t,val);

}catch(Exception e){}

}

list.add(t);

}

}catch (Exception e) {

}

return list;

}

}

第四步:測試:

@Test

public void myutils3(){

QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());

String sql = "select * from users";

List<User> cs =

run.query(sql,new MyBeanListHandler<User>(User.class));

for(User c:cs){

System.err.println(">>:"+c);

}

}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉荫县| 黄山市| 乌海市| 上栗县| 金溪县| 阳城县| 通化市| 合作市| 绵阳市| 淮南市| 古交市| 高州市| 常熟市| 秭归县| 望都县| 塔河县| 兴安县| 黄梅县| 云梦县| 四会市| 华池县| 乐安县| 长泰县| 双柏县| 霍州市| 西城区| 天等县| 融水| 盘山县| 长沙县| 丘北县| 吉首市| 尉犁县| 绥中县| 南昌市| 顺昌县| 调兵山市| 南充市| 镇赉县| 西昌市| 红桥区|