在详情页点击下一条,想让它显示条件查询筛选过的下一条,怎么实现?困扰很久了。
select * from table where 多条件 and id =(select min(id) from table where 多条件 and id >当前数据的id) 这个是数据升序的情况,如果是降序就
select * from table where 多条件 and id =(select max(id) from table where 多条件 and id <当前数据的id)
1、查询时,你肯定是排过序的,
2、在查询时只需要查询当前的下一条就好
根据当前的id 在数据库中查询下一条即可
将多条件查询到的数据放到LIST里面吧,下一条就从list里面取
你这个就是分页,按分页的方法做吧,特殊点,一页一条数据,比正常的分页还简单点。用sql也能查,没必要去消耗数据库的效率。
hibernate用setFirstResult和setMaxResults可以设置分页,setProperties可以设置条件
public List<T> list(String hql, int pageIndex, int pageSize, Object condition) {
List<T> tList = null;
try{
Query query = super.getSession().createQuery(hql);
query.setFirstResult((pageIndex-1)*pageSize).setMaxResults(pageSize);
if (condition != null)
query.setProperties(condition);
tList = query.list();
} catch (Exception e){
e.printStackTrace();
return null;
}
return tList;
}
这很简单啊,你把你每次查到的记录的唯一键比如id放到list里面,因为list是有序的所以你还可以以此取到上一页;将这个list放到session里面,
点击下一页的时候你可以遍历一下list将list的值拼接到sql,如select * from mytable where id not in('1','2')这个not in 里面的值就是你遍历出来
的值,这样就可以随机的取下一个了,而且你要是想取上一个,可以这样
List list=(List) session.getAttribute("mylist");
String id=(String) list.get(list.size()-1);