本實例是在做小項目的時候用到的,想分享給大家,雖然簡單,但可能對大家有用。!!!
實例:記賬系統
一:
數據庫: 流水記錄,記錄的消費類型有很多。如下圖:通過typeId字段可以知道類型。(當然這里還有一張消費類型表哦)
二:sql語句查詢
說明:主要是case語句的運用,根據不同情況,對不同的值進行sum運算得到我們想要的結果!
1 public List getSQLqueryColumnList(String sql) 2 { 3 List l=getSession().createSQLQuery(sql).list(); 4 return l; 5 6 }
baseDao是我各種基礎數據庫操作的函數,大家可以自行構建,其實主要是用上面的函數.
如果用的是hibernate 可以拿到sessionFactory sessionFactory.
SessionFactory.getCurrentSession() 得到session,再操作,即上述函數。
1 //查出各種錢錢錢錢錢錢錢匯總、只查出幾個類別、所以不用group by 2 String Moneysql="select sum(case when typeid=1 then money else 0 end ) as cateen,"+ 3 "sum(case when typeid=2 then money else 0 end ) as car,"+ 4 "sum(case when typeid=3 then money else 0 end ) as entertainment,”+ 11 "sum(case when typeid=10 then money else 0 end ) as othermoney,"+ 12 "sum(money) as totalmoney "+ 13 "from db_workinfo.tb_daily_account where rigisteruser='wuhuanbin' and id between 2 and 30"; 14 15 List listForMoney=baseDao.getSQLqueryColumnList(Moneysql); 16 17 Iterator moneyIterator=listForMoney.iterator(); 18 Object[] o=(Object[])moneyIterator.next(); 19 System.out.println("餐飲"+o[0]); 20 System.out.println("車輛使用 "+o[1]); 21 System.out.println("項目娛樂 "+o[2]); 22 System.out.println("辦公設備 "+o[3]); 23 System.out.println("住宿fe費 "+o[4]); 24 System.out.println("交通費 "+o[5]); 25 System.out.println("服務費 "+o[6]); 26 System.out.println("禮品費 "+o[7]); 27 System.out.println("培訓費 "+o[8]); 28 System.out.println("其他費 "+o[9]); 29 30 System.out.println("總de費用: "+o[10]);
//查的是流水表,根據是消費類型ID哦!