因为在开发过程中总是遇到这种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);