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传递的语句所查询的内容. 让部分操作交给数据库系统执行,尤其在涉及到多表操作时候,及其有用.

Java通过JDBC(Java DataBase Connectivity)驱动程序来实现对PostgreSQL数据库访问。要访问PostgreSQL视图,需要使用SQL查询语句来获取视图中的数据。具体步骤如下: 1. 下载并安装PostgreSQL JDBC驱动程序。在Java项目中引入postgresql.jar文件。 2. 导入需要的类库: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; ``` 3. 创建数据库连接: ``` String url = "jdbc:postgresql://localhost:5432/mydb"; String user = "myuser"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); ``` 注意,mydb是数据库名称,myuser是数据库用户,mypassword是数据库密码,localhost是数据库所在的服务器地址,5432是数据库服务的端口号。 4. 创建Statement对象: ``` Statement st = conn.createStatement(); ``` Statement对象用于向数据库发送SQL语句,并执行查询。 5. 编写查询SQL语句: ``` String sql = "SELECT * FROM myview"; ``` myview是要查询的视图名称。 6. 执行查询语句并获取结果集: ``` ResultSet rs = st.executeQuery(sql); ``` 7. 遍历结果集并处理数据: ``` while(rs.next()){ String field1 = rs.getString("field1"); String field2 = rs.getString("field2"); //在这里处理数据 } ``` 以上代码中,field1和field2是视图中的列名,可以根据实际情况进行修改。 8. 关闭数据库连接和相关资源: ``` rs.close(); st.close(); conn.close(); ``` 完成以上步骤后,Java程序就能够访问PostgreSQL视图并获取其中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值