利用反射和JDBC元資料編寫通用的查詢方法

2021-09-01 11:35:53 字數 1447 閱讀 2718

先貼**,後給設計思路。若有對**中的方法有疑惑的可以檢視jdk幫助文件:

/**

* 使用 jdbc 進行查詢,將結果賦值給物件的 field,返回存放物件的 list

*呼叫 preparedstatement 的 executequery() 方法進行查詢

* resultset:結果集,封裝可使用 jdbc 進行查詢的結果

* resultsetmetadata:jdbc元資料,可以得到結果集裡列的別名等

* @param :泛型

* @param sql:查詢語句

* @param args :補充佔位符的實參陣列

* @return

*/public static listgetselect(classclazz,string sql,object...args)

}//7. 返回物件放入list 中

list.add(entity);

//清空 map,下次迴圈繼續存鍵值

map.clear();

}} catch (exception e) finally

return list;

} //向物件的對應屬性賦值

private static void setfiledvalue(object obj,string filedname,object value) catch (exception e)

}

思路解析:實現思路:

獲取與遠端資料庫的連線,得到查詢結果集,

利用 resultsetmetad 的 getcolumncount() 方法獲取列的數量,getcolumnlabel() 方法獲取列的別名,將結果集存入 map中.

遍歷 map ,根據其 key 得到物件的 field 名並將其 value 值賦給 field。

遍歷完 map 後,物件的所有 field 都被賦值了,然後將物件存入 list中,至此一行結果處理完畢

重複 2 3 4 步驟,直到結果集讀完,即 resultset.next() 為 false。

返回存放物件的 list

接下來測試一下這個方法:

@test

public void testgetselect() ;

listpersons = new arraylist<>();

persons = jdbctools.getselect(clazz, sql, args);

system.out.println(persons.tostring());

}

結果:

JDBC利用反射編寫通用的查詢方法

廢話不多說,直接上 有注釋自己看。不明白就去看官方文件public t getresult class clazz,string sql,object.args 獲取查詢結果集 rs ps.executequery 通過resultset物件獲取resultsetmetadata物件 rsmd rs...

JDBC 元資料

何為元資料?元資料為描述資料的資料,主要是描述屬性的資料的資訊。簡單的說就是關於資料的資料。而在jdbc的學習中獲取資料的定義,如資料庫 表 列的定義資訊,就要用到元資料。在jdbc中使用的元資料有三種 資料庫元資料 引數元資料 結果集元資料。進行元資料的獲取之前我們先來定義用來連線和關閉資料庫的工...

C 利用反射編寫的SqlHelper類

以下是學習筆記 1,常用的查詢方法 例如 根據id查詢學生資訊 根據id查詢物件 查詢的物件 物件id public students find int id using 使用完會自動釋放 using sqlconnection conn new sqlconnection connstsring ...