2012-06-01 319 views
1

我想開發一個模擬我的dao課程。我怎樣才能嘲笑我的GenericDao的以下方法? :模擬單元測試

public List<T> getList(int max, int p) throws DataAccessException { 
    String t= type.getT(); 
    String sql = "from " + t+ " order by id desc"; 
    List<T> o= HibernateUtils(type, this.getSession().createQuery(sql).setFirstResult(max* (p- 1)).setMaxResults(max).list()); 
    return o; 
} 

裏面的東西這樣的:

@Override 
public List<T> getList(int maxResults, int pageNumber) { 
    List<T> list = new ArrayList<T>(); 

    //...... 

    return list; 
} 

回答

1

呼叫getList()然後用對結果的subList()方法將其切成頁面。

你會想要使用LinkedHashMap作爲你的地圖實現,以確保值的順序不會改變。

試試這個:

@Override 
public List<T> getListByPage(int maxResults, int pageNumber) { 
    List<T> list = getList(); 

    if(list.size() > maxResults) { 
     list = list.subList(0, maxResults); 
    } 

    int start = pageNumber * pageSize; 
    int end = Math.min(start + pageSize, list.size()); 

    if(list.size() < start) { 
     list = new ArrayList<T>(); 
    } else { 
     list = list.subList(start, end); 
    } 

    return list; 
} 
+0

可以請你告訴我一可能實施方案getListByPage方法嗎?謝謝 – unnamed

+0

「pageNumber」是什麼意思? –

+0

頁碼是存在的頁面總數。我在我的webapp中做了pagiantion。 – unnamed