本次目标
1.将数据分页
2.地点名称+时间进行查询
开始工作
InfoAction类添加代码
分页查询的第一种方法
分页查询的第二种方法
创建PageInfo 实体类PageInfo类字段
添加方法代码
//开始行数
public int getStart(){
return (this.currPage - 1) * row;
}
// 总页数
public int getPageCount(){
return (int) Math.ceil(this.rowCount / (float)row);
}
// 下一页
public int getNext(){
if (this.currPage >= this.getPageCount){
return this.getPageCount;
}
return this.currPage + 1;
}
// 上一页
public int getPrev(){
if (this.currPage <= 1){
return 1;
}
return this.currPage - 1;
}
InfoAction类代码
struts-info.xml修改配置
<action name="list" class="infoaction" method="searchPage">
<result name="success" type="dispatcher">
/WEB-INF/jsp/list.jsp
</result>
<interceptor-ref name="timeStack"/>
</action>
InfoServiceImpl类代码
实现类代码InfoDaoImpl
public List<Info> selectPage(String findAddress, Date beginTime,
int start, int row, String orderBy) {
Map<String, Object> map = new HashMap<String, Object>();
String hql = "from Info where 1=1 ";
if (findAddress != null && !findAddress.isEmpty()){
hql += "and address like :a ";
map.put("a", "%" + findAddress + "%");
}
if (beginTime != null){
hql += "and createTime >= :t ";
map.put("t", beginTime);
}
hql += "order by " + orderBy;
return
fty.getCurrentSession().createQuery(hql).
setProperties(map)
.setFirstResult(start)
.setMaxResults(row)
.list();
}
public int selectCount(String findAddress, Date beginTime) {
Map<String, Object> map = new HashMap<String, Object>();
String hql = "select count(1) from Info f where 1=1 ";
if (findAddress != null && !findAddress.isEmpty()){
hql += "and address like :a ";
map.put("a", "%" + findAddress + "%");
}
if (beginTime != null){
hql += "and createTime >= :t";
map.put("t", beginTime);
}
return ((Long) fty.getCurrentSession().createQuery(hql)
.setProperties(map)
.uniqueResult()).intValue();
}
我们可以使用QBC语法优化一下代码