jdbcTemplate.queryForList獲取的List轉實體 -----解決方案

因爲在開發過程中總是遇到這種List轉實體的問題,我記得之前用Hibernate的時候這個問題應該是很少遇到的,因爲可以直接賦值給實體,但是我現在用的是jdbcTemplate所以在執行queryForList的時候總是遇到這樣或者那樣的問題,而且寫一遍忘記一遍,所以今天就把他記錄下來方便後續學習。

因爲是初學者有很多地方表述的不正確,所以有看到博文的勿噴,提出意見我會進行修改,謝謝。


下面是JAVA後臺代碼,調用queryForList方法

返回值爲List,泛型爲?號代替

String sql = "SELECT T.FUN_ID,T.FUN_CD,T.FUN_NM FROM T_SM_FUNCTIONS T WHERE T.PAR_FUN_ID='0' AND T.FUN_TYPE='0'";

List<?> list = this.queryForList(sql);

return list;


在service層進行實體賦值,我用到的方法是Iterator遍歷賦值

代碼如下:

List<?> list = this.roleDao.funcRolePblc(); //執行後臺代碼,返回List

Iterator it = list.iterator(); //這裏需要注意的是要用list的iterator遍歷

if(list.size()>0){

    while(it.hasNext()){
    
        TRolFun rolf = new TRolFun(); //創建實體
        
        Map<?, ?> rece = (Map<?, ?>) it.next(); //這裏要注意,it.next()得到這一條數據
        
        rolf.setFuncd((String) rece.get("FUN_CD")); //實體賦值
	        rolf.setFunid(rece.get("FUN_ID").toString());
	        rolf.setFunnm((String) rece.get("FUN_NM"));
    }
}

如此賦值完成,可以通過rolf.getFuncd的方法看到所賦的值


今天在做開發的時候找到了一種賦值給實體的方法,用的是for循環 代碼如下

List list = orderShowDao.getOrderMon(scoNo, strTim, endTim);


//判斷不存在的天數賦值爲0

if(list.size()>0){
	
	for(int i=0;i<list.size();i++){
		
		Object obj = list.get(i);//可省略 直接用下面註釋的內容
		
		Map orderMap = (Map) obj;//Map orderMap = (Map) list.get(i);
		
		System.out.println(orderMap.get("COUNT"));
	
	}

}

或者直接用map的方法,不需要object轉型

        Map orderMap = (Map) list.get(i);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章