Richfaces项目如何实现MySQL数据库最后10行记录的查询展示
实现思路
方案1:DAO层新增分页查询方法(最优推荐)
该方案在数据库层面完成数据筛选,性能损耗最低,适合所有数据量场景:
- 第一步 给
EntrepriseDAO类新增查询最后10条记录的方法,MySQL可通过ORDER BY+LIMIT语法实现,假设Entreprise表用自增主键id或者创建时间字段create_time作为排序依据,对应SQL语句为:
SELECT * FROM entreprise ORDER BY id DESC LIMIT 10
如果需要按插入时间倒序排序,把排序字段替换为create_time DESC即可。如果你的DAO基于JPA/Hibernate实现,也可以通过setFirstResult、setMaxResults方法实现分页逻辑,不需要手写原生SQL。
- 第二步 调整
EntrepriseBean的getTableEntreprise方法,调用新增的DAO方法替换原有getAll(),调整后代码如下:
public class EntrepriseBean implements Serializable{ private List<Entreprise> tableEntreprise ; public List<Entreprise> getTableEntreprise() { ud= new EntrepriseDAO(); // 调用新增的查询最后10条数据的方法 tableEntreprise=ud.getLast10(); return tableEntreprise; } public void setTableEntreprise(List<Entreprise> tableEntreprise) { this.tableEntreprise = tableEntreprise; } }
方案2:业务层截取列表(临时兼容方案,不推荐)
如果暂时无法修改DAO层逻辑,可以在拿到全量列表后手动截取最后10条,仅适合总数据量不足百条的场景,数据量较大时会浪费大量内存和查询性能:
public List<Entreprise> getTableEntreprise() { ud= new EntrepriseDAO(); tableEntreprise=ud.getAll(); // 先倒序再截取前10条,也可以直接取列表末尾的10个元素 Collections.reverse(tableEntreprise); return tableEntreprise.size() > 10 ? tableEntreprise.subList(0,10) : tableEntreprise; }
注意:该方案需要保证getAll()返回的列表默认是按主键/创建时间正序排列的,否则截取结果不符合预期。
内容的提问来源于stack exchange,提问作者Jack Dunois
相关产品推荐
相关产品推荐

