有一天,興致勃勃做畢設的最後一點功能。
“怎麼獲取corders表中decorateModeId字段數量大於0的decorateModeId字段的列表集合?”
很拗口是不是,corders是我的一個商品訂單列表,就是顧客已經買了之後的一個關於發貨的一個數據庫表:
就是這樣的,姐妹!
還有一個decoratemode表:
然後我要查找出在corders表decorateModeId數量多於01的decorateModeId字段,然後根據decorateModeId字段去decoratemode查找Decoratemode類對象返回。
沒之前第二句那麼拗口對不對,姐妹!
我用的是SSH框架做的系統,你們懂,就是Strust2+Spring3.1.1+Hibernate4.1.4.
代碼來了:
@Override
public List<Decoratemode> getRecommendDecorate
(int currentPage, int pageSize) {
// TODO Auto-generated method stub
Session session = getSession();
Transaction transaction = session.beginTransaction();
Session session1 = getSession();
Transaction transaction1 = session1.beginTransaction();
Query query = session.createSQLQuery
("select count(*),decorateModeId "
+ "from corders group by decorateModeId "
+ "having count(*)>0");//使用sql的createSQLQuery查詢通過decorateModeId分組的count值和decorateModeId字段;
int startRow=(currentPage-1)*pageSize;
query.setFirstResult(startRow);
query.setMaxResults(pageSize);//分頁處理
List<Object[]> object = query.list();
Map map = null;
if(object!=null&&object.size()>0){
map = new HashMap();
for(int j=0;j<object.size();j++){
map.put(j,object.get(j)[1]);//獲取的count,decorateModeId的數組,取decorateModeId的值放在map中
}
}
transaction.commit();
List<Decoratemode> decoratemodes=new ArrayList<Decoratemode>();
for(int i=0;i<object.size();i++){
System.out.println(map.get(i)+",");
Query query1 = session1.createQuery
("from Decoratemode where decorateModeId='"+map.get(i)+"'");//取出map的decorateModeId值在decoratemode表中查詢
List<Decoratemode> d=query1.list();
Decoratemode dm=new Decoratemode();//這個一定得加,不然會覆蓋之前add在list列表的對象
dm=d.get(0);
decoratemodes.add(dm);//把所有符和條件的都加入list列表中
}
transaction1.commit();
session.close();
session1.close();
return decoratemodes;
}知識點姐們!!!
除了有sql和hql結合count和字段查詢
還有list在循環語句中添加對象在末尾