java访问数据库视图_java 访问数据库视图
工作多年調用視圖到多次,自己寫代碼使用視圖還是頭一回,也覺得新鮮,那就開始唄, 數據庫系統是Oracle
1 我用的數據庫連接客戶端是Navicat ,首先創建視圖,其實視圖就是調用表的操作,提取自己需要的數據放到視圖下面,相對于java來說,可以把視圖看成是特殊的表對待,這里說的特殊指的是 通過hql語句調用訪問數據庫的時候涉及到關聯表的問題.? 創建視圖如下:
然后通過myeclipse的 hiberange reverse engineering 生成pojo和hbm.xml文件. 生成后發現生成了兩個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語句的視圖查詢)使用的是聯合主鍵查詢,sql語句的視圖查詢不需要使用id.hrid等, 和查詢表一樣, 在 VICdaSummary.java 類中引用了 VICdaSummaryId.java類 ,且作為主鍵 ,參見下圖:
在參加下圖:
在視圖中我們應該保證視圖中的每個字段都不為空(null ) ,因此我做了如下處理:
將可能為空的字段賦值為 empty ,字符串類型的 .
下面附上sql語句的視圖查詢部分代碼:
上圖中并沒有使用 id.HRID 是吧. ok 搞定.
補充:視圖的執行是在,java調用該視圖的時候觸發該視圖執行設計視圖的語句 ,然后從結果集中拿回java傳遞的語句所查詢的內容. 讓部分操作交給數據庫系統執行,尤其在涉及到多表操作時候,及其有用.
總結
以上是生活随笔為你收集整理的java访问数据库视图_java 访问数据库视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input子系统基础之按键3——inpu
- 下一篇: ocsng mysql connecti