You need to enable JavaScript to run this app. Richfaces项目如何实现MySQL数据库最后10行记录的查询展示
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 11:06:06