java访问数据库视图_java 访问数据库视图
工作多年調(diào)用視圖到多次,自己寫代碼使用視圖還是頭一回,也覺得新鮮,那就開始唄, 數(shù)據(jù)庫系統(tǒng)是Oracle
1 我用的數(shù)據(jù)庫連接客戶端是Navicat ,首先創(chuàng)建視圖,其實(shí)視圖就是調(diào)用表的操作,提取自己需要的數(shù)據(jù)放到視圖下面,相對于java來說,可以把視圖看成是特殊的表對待,這里說的特殊指的是 通過hql語句調(diào)用訪問數(shù)據(jù)庫的時候涉及到關(guān)聯(lián)表的問題.? 創(chuàng)建視圖如下:
然后通過myeclipse的 hiberange reverse engineering 生成pojo和hbm.xml文件. 生成后發(fā)現(xiàn)生成了兩個pojo和一個hbm.xml文件,如下:
然后在代碼中使用的時候部分代碼如下:
if (idNumberStr.equals("")){
StringBuffer wherePart = new StringBuffer();
List parmaters = new ArrayList();
wherePart.append(" id.hrid = ? ");
parmaters.add(uniquedId);
wherePart.append(" and id.datetime >=? ");
parmaters.add(_startDate);
wherePart.append(" and id.datetime <=? ");
parmaters.add(_endDate);
cdaList = this.cdaDao.queryObjectsByWhere(
VICdaSummary.class, wherePart.toString(), parmaters.toArray(),
null, startRow, rowCount);
為什么代碼中要使用 id.hrid ,id.datetime? 等等,而不是直接使用hrid,datetime呢,查的也是VICdaSummary這個視圖啊, 原因是(hql語句的視圖查詢)使用的是聯(lián)合主鍵查詢,sql語句的視圖查詢不需要使用id.hrid等, 和查詢表一樣, 在 VICdaSummary.java 類中引用了 VICdaSummaryId.java類 ,且作為主鍵 ,參見下圖:
在參加下圖:
在視圖中我們應(yīng)該保證視圖中的每個字段都不為空(null ) ,因此我做了如下處理:
將可能為空的字段賦值為 empty ,字符串類型的 .
下面附上sql語句的視圖查詢部分代碼:
上圖中并沒有使用 id.HRID 是吧. ok 搞定.
補(bǔ)充:視圖的執(zhí)行是在,java調(diào)用該視圖的時候觸發(fā)該視圖執(zhí)行設(shè)計視圖的語句 ,然后從結(jié)果集中拿回java傳遞的語句所查詢的內(nèi)容. 讓部分操作交給數(shù)據(jù)庫系統(tǒng)執(zhí)行,尤其在涉及到多表操作時候,及其有用.
總結(jié)
以上是生活随笔為你收集整理的java访问数据库视图_java 访问数据库视图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input子系统基础之按键3——inpu
- 下一篇: ocsng mysql connecti