剛剛看了一篇關于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));
    }
}