你能遇到的問題,只要是廣泛存在的,你們都會遇到,那麼,就必定有現成的解決方案.sql
在閱讀 commons-dbutils
的文檔時, BeanHandler
的第二個參數能夠達到這個目的.只需傳入一個實現 RowProcessor
接口的對象. 好比說 BasicRowProcessor
:數據庫
User user = queryRunner.query(conn,sql,new BeanHandler<User>( User.class, new BasicRowProcessor());
這樣作還不夠,你尚未告訴BasicRowProcessor
怎樣處理字段的映射關係,能夠給 BasicRowProcessor
的構造函數傳入一個BeanProcessor
,給這個BeanProcessor
傳入一個Map
,指定數據庫字段和bean
字段的映射關係.函數
Map<String,String> map = new HashMap<>(); map.put("user_id","userId"); User user = queryRunner.query(conn,sql,new BeanHandler<User>( User.class, new BasicRowProcessor(new BeanProcessor(map))));
這樣就能夠將數據中的 user_id
映射到 bean
上的 userId
了.設計
仔細閱讀文檔,發現官方已經貼心的爲你設計好了一個類,專門幹這種事的,叫作 GenerousBeanProcessor
,這下簡單了,再也不須要什麼 map
了.只要你的數據庫字段名稱和bean
中的字段名稱除了下劃線和大小寫都同樣的話,用它就能夠轉換:code
User user = queryRunner.query(conn,sql,new BeanHandler<User>( User.class, new BasicRowProcessor(new GenerousBeanProcessor())));