美文网首页
巧用 Spring @Order 进行排序

巧用 Spring @Order 进行排序

作者: 作草分茶 | 来源:发表于2019-12-31 15:53 被阅读0次

直接上代码

public class OrderAnnotationTest {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        C c = new C();
        List<Object> orderList = new ArrayList<>(3);
        orderList.add(a);
        orderList.add(b);
        orderList.add(c);
        orderList.sort(AnnotationAwareOrderComparator.INSTANCE);
        System.out.println(orderList);
    }

    @Order(0)
    static class A {
        @Override
        public String toString() {
            return "A";
        }
    }

    @Order(-1)
    static class B {
        @Override
        public String toString() {
            return "B";
        }
    }

    @Order(2)
    static class C {
        @Override
        public String toString() {
            return "C";
        }
    }
}

结果如下:

[B, A, C]

原理解析:

AnnotationAwareOrderComparator继承自OrderComparator,实际比较的方法如下

private int doCompare(@Nullable Object o1, @Nullable Object o2, @Nullable OrderSourceProvider sourceProvider) {
    boolean p1 = (o1 instanceof PriorityOrdered);
    boolean p2 = (o2 instanceof PriorityOrdered);
    if (p1 && !p2) {
        return -1;
    }
    else if (p2 && !p1) {
        return 1;
    }

    int i1 = getOrder(o1, sourceProvider);
    int i2 = getOrder(o2, sourceProvider);
    return Integer.compare(i1, i2);
}

相关文章

  • 巧用 Spring @Order 进行排序

    直接上代码 结果如下: 原理解析: AnnotationAwareOrderComparator继承自OrderC...

  • sql语法

    查询 1、ORDER BY排序ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY...

  • MySQL 排序

    SQL 语言中使用 ORDER BY 进行排序 1. ORDER BY 语句 ORDER BY 语法规则: 示例:...

  • PHP MySQL Order By 关键词

    ORDER BY 关键词用于对记录集中的数据进行排序。 ORDER BY 关键词:用于对记录集中的数据进行排序。 ...

  • SQL语句

    ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果集进行排序。 *ORDER BY *语句默认按...

  • 六、SQL ORDER BY 子句

    ORDER BY 语句用于对结果集进行排序。 ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果...

  • 数据库基础04排序

    排序 使用ORDER BY 字句 对查询出的数据按一定规则进行排序操作,使用ORDER BY子句。语法:SELEC...

  • 分页排序查询出现重复字段

    当sql查询操作使用order by 排序再进行limit分页时会出现重复问题原因是order by排序不稳定每次...

  • Spring笔记-@Order注解和Ordered接口

    Order注解用于排序 1.OrderUtils Spring提供了OrderUtils来获取Class的Orde...

  • Nosql-neo4j-Cypher 语句(4)

    目录:[TOC] ORDER BY ORDER BY是RETURN和WITH的子查询,对结果进行排序不能对节点关系...

网友评论

      本文标题:巧用 Spring @Order 进行排序

      本文链接:https://www.haomeiwen.com/subject/suaboctx.html