精华内容
下载资源
问答
  • java -通用sql排序语句

    2021-03-22 14:39:24
    升序(asc)降序(desc)//年龄进行升序排序 (默认升序排列)select *from t_user order by age;select *from t_user order by age asc;+----+-----------+-----+--------+---------+| id | name | age | gender | ...

    升序(asc)

    降序(desc)

    //年龄进行升序排序 (默认升序排列)

    select *from t_user order by age;

    select *from t_user order by age asc;

    +----+-----------+-----+--------+---------+

    | id | name | age | gender | content |

    +----+-----------+-----+--------+---------+

    | 4 | Lili | 16 | 0 | NULL |

    | 2 | HanMeimei | 17 | 0 | NULL |

    | 3 | Lucy | 17 | 0 | NULL |

    | 10 | Ka_te | 17 | 1 | NULL |

    | 1 | LiLei | 18 | 1 | NULL |

    | 9 | ZhangWei | 18 | 1 | NULL |

    | 8 | Lisa | 19 | 0 | ceshi |

    | 6 | ZhangWei | 25 | 1 | NULL |

    | 5 | WeiHua | 32 | 0 | NULL |

    | 7 | Ann | 36 | 0 | NULL |

    +----+-----------+-----+--------+---------+

    //降序

    select *from t_user order by age desc;

    +----+-----------+-----+--------+---------+

    | id | name | age | gender | content |

    +----+-----------+-----+--------+---------+

    | 7 | Ann | 36 | 0 | NULL |

    | 5 | WeiHua | 32 | 0 | NULL |

    | 6 | ZhangWei | 25 | 1 | NULL |

    | 8 | Lisa | 19 | 0 | ceshi |

    | 1 | LiLei | 18 | 1 | NULL |

    | 9 | ZhangWei | 18 | 1 | NULL |

    | 2 | HanMeimei | 17 | 0 | NULL |

    | 3 | Lucy | 17 | 0 | NULL |

    | 10 | Ka_te | 17 | 1 | NULL |

    | 4 | Lili | 16 | 0 | NULL |

    +----+-----------+-----+--------+---------+

    //当年龄相同时 再按照name的升序排序

    1.多个字段排序 靠前的字段优先级越高

    2.只有前面字段age相等的时候 才会按照后面name字段排序

    select *from t_user order by age desc , name asc;

    +----+-----------+-----+--------+---------+

    | id | name | age | gender | content |

    +----+-----------+-----+--------+---------+

    | 7 | Ann | 36 | 0 | NULL |

    | 5 | WeiHua | 32 | 0 | NULL |

    | 6 | ZhangWei | 25 | 1 | NULL |

    | 8 | Lisa | 19 | 0 | ceshi |

    | 1 | LiLei | 18 | 1 | NULL |

    | 9 | ZhangWei | 18 | 1 | NULL |

    | 2 | HanMeimei | 17 | 0 | NULL |

    | 10 | Ka_te | 17 | 1 | NULL |

    | 3 | Lucy | 17 | 0 | NULL |

    | 4 | Lili | 16 | 0 | NULL |

    +----+-----------+-----+--------+---------+

    //按照第三个字段age进行排序(不建议这么写)

    select *from t_user order by 3;

    +----+-----------+-----+--------+---------+

    | id | name | age | gender | content |

    +----+-----------+-----+--------+---------+

    | 4 | Lili | 16 | 0 | NULL |

    | 2 | HanMeimei | 17 | 0 | NULL |

    | 3 | Lucy | 17 | 0 | NULL |

    | 10 | Ka_te | 17 | 1 | NULL |

    | 1 | LiLei | 18 | 1 | NULL |

    | 9 | ZhangWei | 18 | 1 | NULL |

    | 8 | Lisa | 19 | 0 | ceshi |

    | 6 | ZhangWei | 25 | 1 | NULL |

    | 5 | WeiHua | 32 | 0 | NULL |

    | 7 | Ann | 36 | 0 | NULL |

    +----+-----------+-----+--------+---------+

    展开全文
  • 使用JAVA进行排序

    2021-03-14 16:09:05
    利用JAVA完成排序当我们在进行数据库进行查询的时候,当需要按某个字段来进行排序的时候,可以使用SQL语句来完成排序,可以升序,也可以降序。JAVA中的Collections类也可以完成这种操作,SQL的用法和这种集合工具类...

    利用JAVA完成排序

    当我们在进行数据库进行查询的时候,当需要按某个字段来进行排序的时候,可以使用SQL语句来完成排序,可以升序,也可以降序。JAVA中的Collections类也可以完成这种操作,SQL的用法和这种集合工具类的操作,可以用于不同的情况中,至于怎么用,可以根据业务场景来选择,下面我罗列出具体的代码,大家可以参考。

    1)创建工程名为sort的JAVA工程

    创建包结构:

    创建User类:

    1 package com.sunyard.bean;

    2

    3 /**

    4  *

    5  *     用户类,实现Comparable接口,并且在实体类中实现需要排序的逻辑代码

    6  *

    7  * @author:774346810@qq.com

    8  * @date:2017-6-25

    9  */

    10 public class User implements Comparable{

    11     private String id;//编号

    12     private String name;//姓名

    13     private double salary;//工资

    14     private int age;//年龄

    15     private String city;//城市

    16

    17     public User(){}

    18

    19     public User(String id, String name, double salary, int age, String city) {

    20         this.id = id;

    21         this.name = name;

    22         this.salary = salary;

    23         this.age = age;

    24         this.city = city;

    25     }

    26

    27     public String getId() {

    28         return id;

    29     }

    30     public void setId(String id) {

    31         this.id = id;

    32     }

    33     public String getName() {

    34         return name;

    35     }

    36     public void setName(String name) {

    37         this.name = name;

    38     }

    39     public double getSalary() {

    40         return salary;

    41     }

    42     public void setSalary(double salary) {

    43         this.salary = salary;

    44     }

    45     public int getAge() {

    46         return age;

    47     }

    48     public void setAge(int age) {

    49         this.age = age;

    50     }

    51     public String getCity() {

    52         return city;

    53     }

    54     public void setCity(String city) {

    55         this.city = city;

    56     }

    57

    58     @Override

    59     public String toString() {

    60         return "User [id=" + id + ", name=" + name + ", salary=" + salary

    61                 + ", age=" + age + ", city=" + city + "]";

    62     }

    63     @Override

    64     public int compareTo(User o) {

    65         int result = ((this.getAge() - o.getAge()) * 10);//按照年龄的降序排序

    66         //int result = ((o.getAge() - this.getAge()) * 10);//按照年龄的升序排序

    67         //int result = o.getName().compareTo(this.getName());//按照英文字典顺序的降序

    68         //int result = this.getName().compareTo(o.getName());//按照英文字典顺序的升序

    69         return result;

    70     }

    71

    72 }

    创建测试类测试:

    1 package com.sunyard.test;

    2

    3 import java.util.ArrayList;

    4 import java.util.Collections;

    5 import java.util.List;

    6

    7 import com.sunyard.bean.User;

    8

    9 public class Test {

    10     public static void main(String[] args) {

    11         List users = new ArrayList();

    12         User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");

    13         User user2 = new User("2", "lisi", 12000, 25, "hangzhou");

    14         User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");

    15         User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou");

    16

    17         users.add(user1);

    18         users.add(user2);

    19         users.add(user3);

    20         users.add(user4);

    21

    22         System.out.println("排序前 -------------------- >>>");

    23         for(int i = 0;i < users.size();i++){

    24             System.out.println(users.get(i));

    25         }

    26

    27         Collections.sort(users);

    28

    29         System.out.println("排序后 -------------------- >>>");

    30         for(int i = 0;i < users.size();i++){

    31             System.out.println(users.get(i));

    32         }

    33     }

    34 }

    控制台输出:

    1 排序前 -------------------- >>>

    2 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]

    3 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]

    4 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]

    5 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]

    6 排序后 -------------------- >>>

    7 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]

    8 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]

    9 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]

    10 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]

    第二种方式,实现自定义的比较器:

    自定义比较器代码:

    1 package com.sunyard.util;

    2

    3 import java.util.Comparator;

    4

    5 import com.sunyard.bean.User;

    6

    7 /**

    8  *

    实现自定义比较器

    9  * @author:774346810@qq.com

    10  * @date:2017-6-25

    11  */

    12 public class UserComparator implements Comparator{

    13

    14     @Override

    15     public int compare(User o1, User o2) {

    16         int result = 0;

    17         result = ((o1.getAge() - o2.getAge()) * 10);//升序

    18         result = ((o2.getAge() - o1.getAge()) * 10);//降序

    19         return result;

    20     }

    21

    22 }

    测试类:

    1 package com.sunyard.test;

    2

    3 import java.util.ArrayList;

    4 import java.util.Collections;

    5 import java.util.List;

    6

    7 import com.sunyard.bean.User;

    8 import com.sunyard.util.UserComparator;

    9

    10 public class Demo {

    11     public static void main(String[] args) {

    12         List users = new ArrayList();

    13         User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");

    14         User user2 = new User("2", "lisi", 12000, 25, "hangzhou");

    15         User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");

    16         User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou");

    17

    18         users.add(user1);

    19         users.add(user2);

    20         users.add(user3);

    21         users.add(user4);

    22

    23         System.out.println("排序前 -------------------- >>>");

    24         for(int i = 0;i < users.size();i++){

    25             System.out.println(users.get(i));

    26         }

    27

    28         UserComparator comparator = new UserComparator();

    29         Collections.sort(users, comparator);

    30

    31         System.out.println("排序后 -------------------- >>>");

    32         for(int i = 0;i < users.size();i++){

    33             System.out.println(users.get(i));

    34         }

    35     }

    36 }

    控制台输出:

    1 排序前 -------------------- >>>

    2 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]

    3 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]

    4 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]

    5 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]

    6 排序后 -------------------- >>>

    7 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]

    8 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]

    9 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]

    10 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]

    转载于:https://www.cnblogs.com/yujiwei/p/7077548.html

    展开全文
  • 1.SqlParameter.javapackage com.wuhx.util;public class SqlParameter {private String tableName; //物理表名private Integer minrow = 1; //分页最小行[默认1]private Integer maxrow; //分页最大行private ...

    1.SqlParameter.java

    package com.wuhx.util;

    public class SqlParameter {

    private String tableName; //物理表名

    private Integer minrow = 1; //分页最小行[默认1]

    private Integer maxrow; //分页最大行

    private String[] orderBy; //排序eg: {"columnA","columnB DESC"}

    public Integer getMinrow() {

    return minrow;

    }

    public void setMinrow(Integer minrow) {

    this.minrow = minrow;

    }

    public Integer getMaxrow() {

    return maxrow;

    }

    public void setMaxrow(Integer maxrow) {

    this.maxrow = maxrow;

    }

    public String[] getOrderBy() {

    return orderBy;

    }

    public void setOrderBy(String[] orderBy) {

    this.orderBy = orderBy;

    }

    public String getTableName() {

    return tableName;

    }

    public void setTableName(String tableName) {

    this.tableName = tableName;

    }

    }

    2.sql生成方法:

    /**

    *

    * @param obj SQL参数

    * @param param 分页/排序参数

    * @return

    * @throws Exception

    */

    public static String createSQL(Object obj, SqlParameter param) throws Exception {

    StringBuilder sb = new StringBuilder("SELECT t.* FROM "+param.getTableName()+" t WHERE 1=1 ");

    Field[] fields = obj.getClass().getDeclaredFields();

    for(Field f: fields){

    f.setAccessible(true);

    Object fName = f.getName();

    Object fValue = f.get(obj);

    if(fValue != null && !fValue.equals("")){

    sb.append(" AND t."+fName+" = '"+fValue+"'");

    }

    f.setAccessible(false);

    }

    if(param.getOrderBy() != null){

    String orderStr = " ORDER BY ";

    for(String str:param.getOrderBy()){

    orderStr += " "+str+",";

    }

    orderStr = orderStr.substring(0,orderStr.length()-1);

    sb.append(orderStr);

    }

    if((param.getMinrow() != null) && (param.getMaxrow() != null)){

    StringBuilder sb2 = new StringBuilder("SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( ");

    sb2.append(sb.toString());

    sb2.append( " ) A WHERE ROWNUM <= "+param.getMaxrow()+" ) WHERE RN >= "+param.getMinrow() );

    sb = sb2;

    }

    return sb.toString();

    }

    3.测试调用:

    Teacher t = new Teacher();

    t.setTeaId(123456789);

    //t.setTeaLevel("副教授");

    //t.setTeaName("王老师");

    SqlParameter p = new SqlParameter();

    p.setTableName("PROPAGANDA_LOG");

    p.setOrderBy(new String[]{"columnA","columnB DESC"});

    p.setMaxrow(10);

    p.setMinrow(5);

    System.out.println(createSQL(t,p));

    sql输出:

    SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT t.* FROM PROPAGANDA_LOG t WHERE 1=1 AND t.teaId = '123456789' ORDER BY columnA, columnB DESC ) A WHERE ROWNUM <= 10 ) WHERE RN >= 5

    测试2:

    Student s = new Student();

    s.setStuAge("18");

    s.setStuName("张三");

    SqlParameter p = new SqlParameter();

    p.setTableName("STUDENT_LOG");

    System.out.println(createSQL(s,p));

    sql输出2:

    SELECT t.* FROM STUDENT_LOG t WHERE 1=1 AND t.stuName = '张三' AND t.stuAge = '18'

    展开全文
  • 你知道怎么对一个Movie对象组成的List集合,先按照是否收藏字段倒序排序,再按照评分的倒序进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看...

    在开始之前,我先卖个关子提一个问题:假设我们有一个Movie类,这个类有三个成员变量分别是starred(是否收藏), title(电影名称), rating(评分)。你知道怎么对一个Movie对象组成的List集合,先按照是否收藏字段倒序排序,再按照评分的倒序进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看下去。

    在java 8 之前,实现对象Collection排序,集合中被排序和比较大小的对象得实现Comparable接口。在java 8之后,有了Comparator比较器的概念,使用Comparator完成对象数组的排序更加方便快捷,下面就给大家简单的介绍一下java 8中使用Comparator排序的方法。

    一、字符串List排序

    33d2efc384fde1084b1f3c7efdfff69c.png

    cities是一个字符串数组。注意london的首字母是小写的。

    当使用sort方法,按照String.CASE_INSENSITIVE_ORDER(字母大小写不敏感)的规则排序,结果是:[london, Milan, New Delhi, San Francisco, Tokyo]

    如果使用Comparator.naturalOrder()字母自然顺序排序,结果是:[Milan, New Delhi, San Francisco, Tokyo, london]

    在java 7我们是使用Collections.sort()接受一个数组参数,对数组进行排序。在java 8之后可以直接调用集合类的sort()方法进行排序。sort()方法可以传入一个字符串的排序规则,如:String.CASE_INSENSITIVE_ORDER,也可以传入一个排序器Comparator.naturalOrder()作为参数。

    二、整数类型List排序

    dbcc924f17639ec87919030a37378d52.png

    按数字的自然顺序排序,结果是[1, 2, 4, 6, 9]

    三、按对象字段对对象List排序

    这个功能就比较有意思了,举个例子大家理解一下。假设我们有一个类Movie,有三个成员变量分别是starred(是否收藏), title(电影名称), rating(评分)。

    79c35cbf06add50c0aee78d5c14ced2b.png

    首先,我们创建了四个Movie对象,然后将它们转换为List

    然后重点的的代码:使用了函数应用Movie::getTitle作为对象的排序字段,即按照电影的title作为排序字段

    然后调用List的forEach方法将List排序结果打印出来,如下(当然我们重写了toString方法,不然打印结果没有意义):

    3e3353f5f8a71e08c9d79dec198b6db5.png

    如果我们希望List按照Title的倒序排序,就使用reversed()方法。如:Comparator.comparing(Movie::getTitle).reversed()。

    四、使用自定义Comparator排序

    我们自定义一个排序器,实现compare函数。返回0表示元素相等,-1表示前一个元素小于后一个元素,1表示前一个元素大于后一个元素。这个规则似乎和java 8之前没什么区别。

    6f89949c6abcf8ee8e44475dbd4cceaf.png

    最终的打印结果如下,按照started的自定义规则进行排序。

    1dccd11942ade24eea5e5e196926881f.png

    这段代码如果以lambda表达式简写。箭头左侧是参数,右侧是函数体,参数类型和返回值根据上下文自动判断。如下:

    1fc3e35bb87773391c4914a8c2624936.png

    五、通过Comparator链对对象List排序

    27faffd27346e4bc468a1845e9b1f2c5.png

    上面这段代码先是按是否收藏的倒序排序,再按照电影的评分大小的倒序排序,排序结果如下:

    4d2a4df645aba0be4fb2430f40d92dd2.png

    以上就是JAVA像SQL一样对List对象集合进行排序的详细内容,更多关于JAVA 对list集合排序的资料请关注脚本之家其它相关文章!

    展开全文
  • 你知道怎么对一个Movie对象组成的List集合,先按照是否收藏字段倒序排序,再按照评分的倒序进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看...
  • Table tab=SQL.select(sql, null, dataModel); Iterator<Row> iterator=tab.iterator(); int count=0; Map, Object> resultMap=new HashMap, Object>(); List<String> roadList=new ArrayList(),...
  • 一、需求背景万恶的产品经理,在不同场景有不同的排序需求,有时候根据字段 0 1 2 升序 ,有时候又是1 2 0 这样排序,重点是还要分页,就无法使用代码去实现排序,只能用纯sql语句。假设现在有一个订单表,表里有个...
  • //Milan //New Delhi //San Francisco //Tokyo //london 在java 7我们是使用Collections.sort()接受一个数组参数,对数组进行排序。在java 8之后可以直接调用集合类的sort()方法进行排序。sort()方法的参数是一个...
  • 最近遇到了一个问题,那就是数据直接通过sql计算会很慢,或者是计算不出来,那么计算数据的任务只能交给java后台。计算完数据之后,需要对数据进行排序,分页。如果知道固定的排序规则好办,但是如果不知道规则,...
  • sql使用java排序

    2021-07-16 21:31:35
    I have the following problem which could (I am hoping) have a standard solution.I have a java application that interacts with the database and builds dynamically SQL strings.So far I guess usual stuff...
  • java 两种方式实现自定义排序

    千次阅读 2021-03-05 15:55:02
    //Comparable 使工具自己具有可比性,那类格式称为元素的自然按序或默许按序//Comparator 元素自己没有具有比较性或比较性没有是所需供的,正在纠散初初化让其具有比较性 (更开用)import java.util.*;//class public...
  • 如果是20-30的值,那么你可以在任何地方进行排序 – 即使是相对较差的排序算法也可以快速地进行排序(避免使用Stooge Sort,那太糟糕了) – 因为你可能希望这样大小的数据块实际上在一个服务响应中获取.但是,一旦你进入...
  • 一、sql去重排序:需求,对数据库数据按mfrom去重(显示最新数据),并对去重后的数据按mcreated_time进行倒序排列:sql语句为:(1)SELECT * FROM messages m WHERE NOT EXISTS (SELECT * FROM messages WHERE m.mfrom ...
  • 以上语句无法满足要求实现如下:1、mysql和oracle都支持SELECT department_id,order_expected_amount,administrator_id, case administrator_id when 0 then -1 else order_expected_amount end as orderByNumber ...
  • package ...import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/*** 项目名称:* ...
  • ES 分组排序java实现

    千次阅读 2021-02-26 15:39:49
    实现sql:select field1, field2, sum(field3) from table_name group by field1, field2;多字段分组并求和;实现sql:select field1, field2, top(field3) from table_name group by field1, field2;ES java 样例:/*...
  • 在项目中有时候难免会遇...展示这个列表的时候是在SQL语句中根据sortNum进行排序,正序或者倒序,思路就是点↑的时候把上下的排序码互换位置,点击↓的原理也是如此 如果仅仅是想实现这样最简单的上下排序那么非常的...
  • SQL中按日期排序

    2021-03-16 13:55:42
    我有一个资源表,其中一个字段是日期字段,其数据类型为日期 . 我想要输出以下内容:当月记录(比如五月 - 一年并不重要)然后是以下(再次...这是我的SQL ...我不知道如何命令输出达到所需的顺序(5,6,7,8,9,10,11,12,...
  • springboot+mybatis+pagehelper实现分页排序以及动态sql IDEA新建springboot工程承,命名为springboot-mybatis-sz 修改pom文件,引入所需依赖 <?xml version="1.0" encoding="UTF-8"?> <project ...
  • java实现sql的select函数功能2007-6-9文字大小:大中小在Java实现sql的select函数功能――通过简单的机制实现对象数组或集合的选择,过滤,和排序David RapPOPOrt摘要在“filter collections”中,David ...
  • 在排序界面能够人工的手动拖动需要排序的标题,完成对应的排序之后提交3,在app或者是前端就有对应的排序实现了二、页面展示将整体页面效果展示出来之后如图所示(页面点击确定之后的效果是与java后台进行交互的):...
  • Java中List排序简单实现在实际项目中可能会遇到不相关的表查询结果拼装成一个并按时间倒序排序,然而这样的需求往往用sql不能方便的实现,就需要分别查询出来用List返回,但是返回时需要排序。这时就需要用到List的...
  • 我需要Java中的比较器,该比较器的语义与sql"赞"运算符相同。例如:myComparator.like("digital","%ital%");myComparator.like("digital","%gi?a%");myComparator.like("digital","digi%");应该评估为真,并且...
  • 在后台的管理界面通过排序功能直接进入排序界面2,在排序界面能够人工的手动拖动需要排序的标题,完成对应的排序之后提交3,在app或者是前端就有对应的排序实现了本文将详细介绍web拖拽排序和java后台交互的相关内容...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 149,155
精华内容 59,662
关键字:

java实现sql排序

java 订阅