首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

ibatis有关问题

2012-01-19 
ibatis问题用ibatis做的一个项目,DAO层的一个方法中://查询所有角色权限public List findAllRoleRight(Use

ibatis问题
用ibatis做的一个项目,DAO层的一个方法中:
//查询所有角色权限
public List findAllRoleRight(UserMgrForm userMgrForm)
{
Map<String, String> map = null; //定义Map集合
List<Map<String, String>> list = new ArrayList<Map<String,String>>();
TRoleRright r = new TRoleRright(); //这是一张公共类,集合角色,权限两张表中的属性
list = getSqlMapClientTemplate().queryForList("findAllRole", r);
System.out.println("DAO中的List = "+list.size());//这边打印出来的条数跟表中的相符,也是对的
Iterator iter = list.iterator();
while(iter.hasNext())
{
TRoleRright t = (TRoleRright)iter.next();
System.out.println("t=="+t); //这边在控制台打印是有值的
String roleId = String.valueOf(t.getRoleId());
System.out.println("roleId = " + roleId);//这边打印出来就没值了
String roleName = t.getRoleName(); //值也为null
System.out.println("roleName = " + roleName);
map = new HashMap<String, String>(); 
//将角色id放在Map集合里
map.put("roleId", roleId);
//将角色名称放在Map集合里
map.put("roleName", roleName);

TRoleRright roleRight = new TRoleRright();
//设置角色ID
roleRight.setRoleId(t.getRoleId());

List<TRoleRright> roleRightList = getSqlMapClientTemplate().queryForList("findAllRoleRight", roleRight);
System.out.println("DAO roleRightList:::"+roleRightList.size());
Iterator it = roleRightList.iterator();

String rights = "";
while(it.hasNext())


TRoleRright right = (TRoleRright)it.next();
System.out.println("right=="+right); //有值
String rightName = right.getRightName(); 
System.out.println("rightName::::::"+rightName); //null值
rights=rights+rightName+"/";
System.out.println("rights1 ="+rights);
}
System.out.println("rights2 ="+rights);
if(!"".equals(rights))
{
rights = rights.substring(0, rights.length()-1);
}
map.put("rightName", rights);
list.add(map);
}
return list;
}
以上DAO中的方法主要想实现,在页面中呈现出:角色编号,角色名称,权限名称这三列的数据。一个角色可以拥有多个权限,所以想先得到权限名称,以“/”分隔。 在DAO层此方法中用Debug设断点调试,很多期望得到的值都为null,不知为何?!希望大侠们指点。多谢大家,感激不尽!!

[解决办法]
null值 ,是不是你的sql不对啊,把sql拿到db里试试,看看对应的字段是不是null
[解决办法]
1.先把你的sql拿到别的数据库访问工具里面执行看能取到值吗
2,检查你的resultClass是不是正确,如果你写错了,很可能返回null
[解决办法]
System.out.println("t=="+t); //这边在控制台打印是有值的

t中的值你都看到了吗?我怀疑你转换的时候把值给转没了,你别只打印t,要打印t中的内容
每一个字段
[解决办法]
因为你的出null值之前的对象不知道对应的值,无法判断是否搜索出来的时候就为空值,建议将ibatis的配置中返回结果集先改为返回java.util.HashMap,然后在dao中可以直接看到搜索结果中每个字段对应的值,这样比较容易调试,调试完成再改为返回对象即可!

热点排行