做SSH项目的时候,写了这样一段代码:
public EmployeeVo getEmpByNo(String empNo) {
EmployeeVo empVo = null;
String hql = "from Employee where empNo = ?";
List<Employee> empList = getHibernateTemplate().find(hql, empNo);
if (empList!=null && empList.size()>0) {
Employee emp = empList.get(0);
empVo = new EmployeeVo();
BeanUtils.copyProperties(emp, empVo);
}
return empVo;
}
这段代码是正确的
但是要注意的是,如下的写法是不正确的:
Employee emp = (Employee) getHibernateTemplate().find(hql, empNo).get(0);
你不能一上来就get(0),因为你还不能确定getHibernateTemplate().find()返回的list是否有结果。
如果没结果,即size=0,此时你却执行get(0),那么就会抛IndexOutOfBoundException异常。
你必须先加上这样一句判断,成功才执行上面的代码:
if (getHibernateTemplate().find(hql, empNo).size() > 0)
考虑周到了,才能避免未知的错误发生!