select id, name, age, sex (等等……不确定几个column) from user where name="aa" order by id;
本来是这样一条sql,可是现在要求不允许在sql里用order by这个函数(说是会影响效率……)。就是把结果查出来然后用java来排序id字段。首先我是把查出来的所有列的结果分别放到1个list里。然后重写comparator类,用Collections.sort(userlist, comparator);来排序。 现在程序是正常运行的。可问题是,因为要查的sql column的数量不确定,所以,对应java pojo也要增加,譬如 setName(), getAget()……等等。
这样每次不同的sql就要去调用一个不同的java排序,这样写起来很烦,要写很多排序的java。 我想问声像我这样的有什么办法可以简单高效率的实现吗?

解决方案 »

  1.   

    我总觉得数据库的order by 排序 要比自己写方法排序效率高 
      

  2.   

    用Collections类的排序方法就行了,具体参考JDK
      

  3.   

    要不,重写comparator类的时候,用反射的getId方法拿出值来,
    这样所有的list就可以共用一个comparator了。
    你是这个意思吗?
      

  4.   

    我们是b2c的网站,每天访问流量很大,数据库有时会lock掉,导致网站down。所以把order by改成 java 排序来试试看。
      

  5.   

    to 3# 
    你说的在重写时拿出getID的值。打个比方,譬如现在的程序有getID,getName2个方法,可下一条sql要用到getTotal, getItem……等等方法。所以我每条sql都要写个程序来排序,这样要写很多很多
      

  6.   

    已经建索引了,可上面要求用java做
      

  7.   


    同意一楼 如果order by效率低 java排序may be 更低
      

  8.   

    order by慢 说明数据量很大 拿到虚拟机内存来排序 和oracle排序差的可能不是一个数量级了 个人见解
      

  9.   

    可以试试在SERVLET里做个排序的方法,或者用SORTSET,重写一下EQUALS方法。
      

  10.   

    重写comparable接口或者comparator类
      

  11.   

    对3楼的意见你指的考虑下但是我还是认为数据库的排序效率要比在java中的效率高吧