如何实现对DAO方法的排序?

罗伯托少年

这个问题是3年前在这里由另一个人提出的,但没有最终答案:指定DAO方法的排序

我的问题是一样的。我有一个类Student和一个实现DAO的StudentDAOImpl类。我该如何告诉我的方法getAll,我希望所有的学生都按名字排序,而又不将调用者耦合到特定的实现。我想知道这样做的几种方法,但是我想知道什么是最佳实践。

非常感谢您的关注。

public class Student{
    private int id;
    private String name;

    public Student() {
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

}

public class Student{} 

public interface StudentDao{ 
    public LinkedList<Student> getAll(Student s, StudentSortCriterion sortBy); 
} 

public class StudentDaoImpl implements StudentDao{ 
     getAll(...){implementation/SQL Statement}
} 
杜兰达

从抽象的角度来看,您需要传递信息如何进行排序。可以通过多种方法进行设计,但为了简单起见,可以将排序的属性直接与学生班级联系在一起。那么为什么不为可排序属性定义常量呢?

DAO无论如何都需要对学生班有深入的了解(因为它必须知道如何创建它们),因此它可以响应学生班定义的参数:

class Student {
    public static enum SortCriterion {
        ID,
        NAME
    }
    // ...
}

Collection<Student> getAll(SortCriterion sortBy, boolean descending) {
    switch (sortBy) {
    }
}

这样可以将DAO与学生结合在一起(对此没有害处,因为它已经结合了),但是DAO用户不需要知道排序是如何实现的。

但是出于任何正常目的,我宁愿不要DAO工具进行排序。如果无论如何都是getAll()学生,为什么不使用一个简单的普通比较器,也许很好地嵌入到Student中:

class Student {
    public static interface Order {
        public final static Comparator<Student> ID = new Comparator() {
            // implemetation
        }
    }
}

进行DAO排序的唯一要点是,如果它返回由数据库结果集支持的惰性集合。但是,如果结果集那么大,那为什么还要使用getAll()?

思考点:排序DAO的用例是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何实现选择排序?

来自分类Dev

如何实现特定的排序?

来自分类Dev

如何使用泛型实现Hibernate DAO

来自分类Dev

如何实现std :: map的排序?

来自分类Dev

Tensorflow,如何实现排序层

来自分类Dev

如何实现std :: map的排序?

来自分类Dev

如何实现排序列表

来自分类Dev

如何使用jUnit在具有Java配置类且没有XML的Spring MVC中测试DAO实现方法

来自分类Dev

Spring MVC:如何从自定义接口实现DAO

来自分类Dev

实现堆排序的正确方法是什么?

来自分类Dev

NoSQL DAO实现

来自分类Dev

Java-实现DAO

来自分类Dev

JavaScript的本机排序功能如何实现?

来自分类Dev

如何在Python中实现快速排序

来自分类Dev

如何实现对我的ArrayList的插入排序?

来自分类Dev

如何实现列表中的选择排序?

来自分类Dev

如何在SQL中实现双向排序?

来自分类Dev

JavaScript的本机排序功能如何实现?

来自分类Dev

如何在KoGrid中实现DateTime排序

来自分类Dev

PyQt-如何重新实现QAbstractTableModel排序?

来自分类Dev

如何使用Mockito测试DAO方法?

来自分类Dev

如何通过javascript函数调用DAO方法?

来自分类Dev

如何实现_()方法?

来自分类Dev

如何实现“getAllChildrenById”方法

来自分类Dev

DAO实现:使DAO对象成为其他DAO的属性

来自分类Dev

如何实现接口的默认方法?

来自分类Dev

如何实现parsec的try方法?

来自分类Dev

如何实现此方法链接

来自分类Dev

如何实现继承的方法链接?