public List findNewList(){
List list=this.newsDAO.findByExample(new News());
List<NewObject> tempList =new ArrayList<NewObject>();
for (int i=list.size();i>list.size()-this.NEWS_SIZE;i--){

String tempNewContent=((News)list.get(i-1)).getNewContent();
String tempNewTitle=((News)list.get(i-1)).getNewTitle();
Date tempNewDate=((News)list.get(i-1)).getNewDate();
String tempNewsPicUrl=((News)list.get(i-1)).getNewsPic().getNewpicUrl();
    NewObject newObject=new NewObject();
    newObject.setNewContent(tempNewContent);
    newObject.setNewTitle(tempNewTitle);
    newObject.setNewDate(tempNewDate);
    newObject.setNewsPicUrl(tempNewsPicUrl);
    tempList.add(newObject);
}
return tempList;
}以上代码是取出5条数据,但是不是数据库中最新的5条;
本人想根据日期,取出最新的5条数据,怎么办?

解决方案 »

  1.   

    this.newsDAO.findByExample 取数据的方法改改,按时间排序步就可以了吗?
      

  2.   

    这个不就是改改你的SQL语句么......按照时间排序.取前几条不就OK了.
      

  3.   

    可以通过 sql 获得最新的数据比如你的表中有计入插入时间的字段 INSERT_TIME  表明叫 T_CUST
    sql:   select top 5 * from T_CUST a order by a.INSERT_TIME desc;
    如果你的数据库是 mysql
    sql:   select * from T_CUST a order by a.INSERT_TIME desc limit 0, 5
      

  4.   

    如果是Oracl
    SQL: select * from T_CUST a where rownum <= 5 order by a.INSRT_TIME desc;
      

  5.   


    同意4楼滴,但5楼Oracle的语句好象不太对撒。
    你滴是查询数据库中的前5条数据,然后在对它们按时间降序排列。应该是:
    select * from (select * from  T_CUST order by INSRT_TIME desc)where rownum!=6;
      

  6.   

    在mysql里面怎么写啊?
    还有我的DAO里面的一些方法都是自动生成的;
    如果我想在DAO里面写方法;
    不太好写;
    因为DAO里面有它自己的一套规范;
    怎么办?
      

  7.   

    DAO??应该是实体层吧?呵呵,我也忘了啊,在做项目时一般DAO用entity代替。
    不然,很容易和DTO混淆。
    它里面的方法一般不修改,仅作为实体的封装。
    你在模型层中修改撒
      

  8.   

    mysql 参照4楼
    也很好改的
    自动生成的  有一个规则
    那就是接口在你的 接口里添加一个方法  一般是  XXXXDAO.java
    然后在  XXXXDAOImp.java 这个里面添加刚才的那个方法  并实现 就 Okay 了 
      

  9.   

    谢谢 yuanlove  的指出
      

  10.   

    我认为不修改DAO里面的方法,就不能实现日期的排序;
    默认是使取出数据库中的所有数据;这些数据没有经过排序的;
    Dao————Service————action----