剛剛看了一篇關于IBM的pureQuery的介紹。
結合工作中的實際情況。忽然發現,大部分的模塊都會有查詢功能。盡管很多項目都使用了hibernate,但是,查詢結果頁面上的數據一般都不會是單純某個hibernate entity object所具備的,很多都是幾張表的數據湊起來的。要是再加上分頁要求的話,使用HQL查詢似乎有困難。使用純SQL,JDBC查詢的話相對簡單,但是,每個地方都會編寫幾乎雷同的代碼。而這種情況出現多次的話,大家都會去COPY,PASTE。很快,各種小問題就跟著來了。
所以,寫一個實現如標題的小工具應該很有實用性。
public class SQLResults2POJOUtil {
public SQLResults2POJOUtil (java.sql.Connection queryConnection) {
...
}
public List query(String sql, Object[] params, Class pojoClass) throws java.sql.SQLException {
/* 第一步:執行SQL查詢,得到結果集。
* 第二步:將結果集中的每個column的name和pojoClass中的相關屬性的set方法關聯起來。
* 第三步:遍歷結果集的每個數據,設置到pojoClass的實例。
* 最后:返回pojoClass集合。
* 這里面有2個關鍵點,第一是column name和屬性名稱匹配時要忽略大小寫,忽略下劃線
* 第二點是實際設置pojoClass實例的值時還要記得類型轉換(常規轉化就那么幾種,可以考慮建立轉化注冊機制,方便實際使用中特殊類型轉化的擴展需要)。
*/
}
public List query(String sql, Class pojoClass) throws java.sql.SQLException {
return (query(sql, null, pojoClass));
}
}
結合工作中的實際情況。忽然發現,大部分的模塊都會有查詢功能。盡管很多項目都使用了hibernate,但是,查詢結果頁面上的數據一般都不會是單純某個hibernate entity object所具備的,很多都是幾張表的數據湊起來的。要是再加上分頁要求的話,使用HQL查詢似乎有困難。使用純SQL,JDBC查詢的話相對簡單,但是,每個地方都會編寫幾乎雷同的代碼。而這種情況出現多次的話,大家都會去COPY,PASTE。很快,各種小問題就跟著來了。
所以,寫一個實現如標題的小工具應該很有實用性。
public class SQLResults2POJOUtil {
public SQLResults2POJOUtil (java.sql.Connection queryConnection) {
...
}
public List query(String sql, Object[] params, Class pojoClass) throws java.sql.SQLException {
/* 第一步:執行SQL查詢,得到結果集。
* 第二步:將結果集中的每個column的name和pojoClass中的相關屬性的set方法關聯起來。
* 第三步:遍歷結果集的每個數據,設置到pojoClass的實例。
* 最后:返回pojoClass集合。
* 這里面有2個關鍵點,第一是column name和屬性名稱匹配時要忽略大小寫,忽略下劃線
* 第二點是實際設置pojoClass實例的值時還要記得類型轉換(常規轉化就那么幾種,可以考慮建立轉化注冊機制,方便實際使用中特殊類型轉化的擴展需要)。
*/
}
public List query(String sql, Class pojoClass) throws java.sql.SQLException {
return (query(sql, null, pojoClass));
}
}