不要看懂代码,只要解释一下这个结构,关于匿名内部类中的方法,它可以有自己的私有方法吗?
@Override
public Paging getStuByParams(final String queryName,
final String queryDepart, final long pageSize, final long pageNow) {
return (Paging) template.execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session ses) throws HibernateException {
String hql = "from StudentScore ss where 1=1 ";
List<StudentScore> ss = null;
Paging p = new Paging();
if(queryName != null && queryName.trim().length() > 0){
hql += "and ss.stuName like '%"+queryName+"%' ";
}
if(queryDepart != null && queryDepart.trim().length() > 0){
hql += "and ss.department = '"+queryDepart+"' ";
}
// 获取List<StudentScore>
ss = ses.createQuery(hql)
.setFirstResult((int) (pageSize*(pageNow-1)))
.setMaxResults((int) pageSize)
.list();
// 获取总共的记录数
long rowCount = this.getRowCount(queryName, queryDepart);
// 获取页数
long pageCount = 0;
if(rowCount % pageSize == 0){
pageCount = rowCount / pageSize;
}else{
pageCount = rowCount / pageSize + 1;
}
p.setPageCount(pageCount);
p.setPageNow(pageNow);
p.setPageSize(pageSize);
p.setRowCount(rowCount);
p.setSs(ss);
return p;
}
private long getRowCount(final String queryName, final String queryDepart) {
return (long) template.execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session ses) throws HibernateException {
String hql = "select count(*) from StudentScore ss where 1=1 ";
if(queryName != null && queryName.trim().length() > 0){
hql += "and ss.stuName like '%"+queryName+"%' ";
}
if(queryDepart != null && queryDepart.trim().length() > 0){
hql += "and ss.department = '"+queryDepart+"' ";
}
return ses.createQuery(hql).uniqueResult();
}
});
}
});
}
------解决思路----------------------
getRowCount 就是一个匿名内部类的私有方法
------解决思路----------------------
除了匿名,基本类的特性都有。