java 访问数据库视图

工作多年调用视图到多次,自己写代码使用视图还是头一回,也觉得新鲜,那就开始呗, 数据库系统是Oracle

 

1 我用的数据库连接客户端是Navicat ,首先创建视图,其实视图就是调用表的操作,提取自己需要的数据放到视图下面,相对于java来说,可以把视图看成是特殊的表对待,这里说的特殊指的是 通过hql语句调用访问数据库的时候涉及到关联表的问题.  创建视图如下:

 

 

 

然后通过myeclipse的 hiberange reverse engineering 生成pojo和hbm.xml文件. 生成后发现生成了两个pojo和一个hbm.xml文件,如下:

 

然后在代码中使用的时候部分代码如下:

 if (idNumberStr.equals("")){
            	StringBuffer wherePart = new StringBuffer();
    			List<Object> parmaters = new ArrayList<Object>();
    			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传递的语句所查询的内容. 让部分操作交给数据库系统执行,尤其在涉及到多表操作时候,及其有用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值