BaseServiceImpl:
/**
* @param hql:傳入的hql,可以帶?
* @param parameters:問號對應的參數數組
*/
public List getResult(String hql, Object[] parameters) {
// TODO Auto-generated method stub
Query query = sessionFactory.getCurrentSession().createQuery(hql);
//注入?
if(parameters != null && parameters.length > 0){
for(int i = 0;i < parameters.length;i ++){
query.setParameter(i, parameters[i]);
}
}
return query.list();
}
ArticleServiceImpl:
public PageBean queryForPage(int userId,int pageSize,int page){
final String hql = "from Article where users.id=" + userId;
int allRow = getResult(hql,null).size(); //總記錄數
int totalPage = PageBean.countTatalPage(pageSize,allRow); //總頁數
final int offset = PageBean.countOffset(pageSize, page); //當前頁開始記錄
final int length = pageSize; //每頁記錄數
final int currentPage = PageBean.countCurrentPage(page); //當前頁
List<Article> list = queryForPage(hql,offset,length);
//把分頁信息保存到bean當中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}
異常信息指示:getResult方法中Query query = sessionFactory.getCurrentSession().createQuery(hql);這句話有問題和ArticleServiceImpl中的int allRow = getResult(hql,null).size(); //總記錄數這句話有問題。
請大家幫我看看這個空指針異常怎麼改?
如果你不太會打斷點,這樣:
這下面的代碼中,做類似這種事情,類型你自己根據你的情況來定:
T factory = sessionFactory;
//對factory判空...
T session = factory.getCurrentSession();
//對session判空...
T query = session.creatQuery(hql);
//對query判空...
Query query = sessionFactory.getCurrentSession().createQuery(hql);
//注入?
if(parameters != null && parameters.length > 0){
for(int i = 0;i < parameters.length;i ++){
query.setParameter(i, parameters[i]);
}
}
return query.list();
}