oracle dlink查询 提交,hibernate连接oracle数据库进行查询

按主键查询

dao层

public Emp get(Serializable id){

//通过session的get方法根据加载指定对象

return (Emp)HibernateUtil.currentSession().get(Emp.class,id);

}

service层

public Emp findEmpById(Integer id){

Transaction tx=null;

Emp result =null;

try {

tx=HibernateUtil.currentSession().beginTransaction(); //开启事务

result=empDao.get(id); //调用Dao,根据OID加载指定对象

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

if(tx!=null)

tx.rollback(); //回滚事务

}

return result;

}

test测试类

public static void main(String[] args) {

EmpService empService = new EmpService();

//查询

Emp emp =empService.findEmpById(7788);

System.out.printf(emp.getEname());

}

使用HQL

什么是hql

hql查询是一种面向对象的查询语言,其中没有表和字段的概念,只有类,对象和属性的概念,hql语句中除了java类和属性名称外,查询语句对大小写敏感,

所以SELECT和select是相同的.但是cn.entity.emp和cn.entity.EMP.hql语句中的关键字建议使用小写字母.

编写hql

hql的语法跟我们数据库中写的语法差不多,需要注意的是hql中查询所有的列并不需要select关键字如下,最重要的一点是hql列对应的是类的中的字段名称,而不是数据库中的列

dao层

public List findEmp(String job){

String hql = "from Emp";

Query query =HibernateUtil.currentSession().createQuery(hql);return query.list();

}

service层

public void findEmp(String job){

Transaction tx =null;

try {

tx=HibernateUtil.currentSession().beginTransaction();

List emps = empDao.findEmp();

for (Emp e:emps) {

System.out.println(e.getEname());

}

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

}

}

这样即可把全表的数据读取出来,或者使用迭代器如下

public Iterator findAll(){

String hql ="from Emp"; //定义hql

Query query = HibernateUtil.currentSession().createQuery(hql);

return query.iterate(); //执行查询

}

public Iterator findAllEmps(){

Transaction tx=null;

Iterator emps=null;

try {

tx=HibernateUtil.currentSession().beginTransaction(); //打开事务

emps=empDao.findAll(); //获取数据

Emp emp=null;

while (emps.hasNext()){ //判断是否遍历到末尾

emp=emps.next();

System.out.println("员工名称:"+emp.getEname());

}

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

if(tx!=null)

tx.rollback();

}

return emps;

}

在hql语句中绑定参数

query接口提供的绑定不同类型的参数的方法

setBoolean():绑定Boolean类型的参数

setByte():绑定byte类型的参数

setDouble():绑定double类型的参数

setDate():绑定util.Date类型的参数

setString():绑定String类型的参数

两种语法:

setXXX(下标,值)

setXXX(参数名称,值)

如果需要使用setXXX(参数名称,值)进行绑定参数 如下:

String hql = "from Emp where job=:j";

Query query =HibernateUtil.currentSession().createQuery(hql);

query.setString("j",job);

如果是setXXX(下标,值)参数绑定  如下:

String hql = "from Emp where job= ?";

Query query =HibernateUtil.currentSession().createQuery(hql);

query.setString(1,job);

注意

setXXX(参数名称,值) 在hql中 需要使用 :自定义参数名称

setXXX(下标,值) 在hql中需要使用 ?

除了以上用于绑定特定类型参数的方法,hibernate还提供了setParameter()方法,用来绑定任意类型的参数.

public List findDate(Emp hireDate){

String hql = "from Emp where hiretDate > :hiretDate"; // :hiretDate 的hiretDate是与emp类的hiretDate名字一致

Query query =HibernateUtil.currentSession().createQuery(hql);

query.setProperties(hireDate); //传参

return query.list();

}

分页和投影

hql中的分页非常简单,如下代码

public List empPage(Integer start,Integer end){

String hql = "from Emp";

Query query =HibernateUtil.currentSession().createQuery(hql);

query.setFirstResult((start-1)*end); //设置页数

query.setMaxResults(end); //设置每页显示的数据

return query.list();

}

public void empPage(Integer start,Integer end){

Transaction tx=null;

try {

tx=HibernateUtil.currentSession().beginTransaction();

List emps = empDao.empPage(start,end);

for (Emp e:emps) {

System.out.println(e.getEname());

}

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

if(tx!=null)

tx.rollback();

}

}

假设是第二页 查六笔数据如下结果

9ed0c7a00c2c6a0412fc5b82ba09c429.png我们再来看下数据库中

742d668f7b50a7eb164693c325026000.png

投影

使用from 表名 表示查询表的所有列,使用SELECT 列1, 列2, 列3 from 表名则可以仅返回指定列,这种操作称为投影。

hibernate 连接 oracle数据库

前言:以下所有的操作都是基于你已经成功安装了oracle数据库并且java的开发环境正常的情况下进行的. 如果没有完善请先配置基础环境. 第一步:配置需要的环境(下载并导入需要的包). 我的百度云盘里 ...

hibernate连接oracle数据库

前言:以下所有的操作都是基于你已经成功安装了oracle数据库并且java的开发环境正常的情况下进行的. 如果没有完善请先配置基础环境. 第一步:配置需要的环境(下载并导入需要的包). 下载链接:ht ...

hibernate 连接oracle数据库的配置 (参考)

<?xml version='1.0' encoding='UTF-8'?>         &qu ...

php连接oracle数据库转载

php连接oracle数据库及查询数据的方法 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-12-29 这篇文章主要介绍了php连接oracle数据库及查询数据的方法 ...

连接Oracle数据库的Hibernate配置文件

连接Oracle数据库的Hibernate配置文件连接Oracle的Hibernate配置文件有两种格式,一种是xml格式的,另一种是Java属性文件格式的.下面分别给出这两种格式配置文件的代码. 1 ...

C&num;连接Oracle数据库查询数据

C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; u ...

连接Oracle数据库的Hibernate配置…

连接Oracle数据库的Hibernate配置文件 连接Oracle的Hibernate配置文件有两种格式,一种是xml格式的,另一种是Java属性文件格式的.下面分别给出这两种格式配置文件的代码. ...

java连接Oracle数据库

Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id ) not null primary key, ...

记录排查解决Hubble&period;Net连接Oracle数据库建立镜像库数据丢失的问题

起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...

随机推荐

python---tcp&sol;ip网络编程

重点总结: 服务端:一直运行(while true),监听运行所在机器(ip)某端口,多线程或多进程接收客户端的socket请求 客户端:主动发起请求,需求知道服务器的ip和端口 服务端: # -*- ...

iOS从App跳转至系统设置菜单各功能项的编写方法讲解

跳到系统设置里的WiFi界面 info里面设置: 在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图 代码: 复制代码 代码如下: NSUR ...

横竖屏切换时候Activity的生命周期

1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate-->onStart-->onResume--> 3.按crtl+f1 ...

Tesseract初探

一.框架介绍 Tesseract 是一款图片识别工具,可以抓取图片中的文字,可以支持多种语言(默认是英语),需要下载开源文件可以在github上下载,如果知识应用不想太多深究直接在google cod ...

Integrating JavaScript into Native Applications

JavaScriptCore 简介 iOS7 中新加入的 JavaScriptCore.framework 可能被大多数开发人员所忽略,但是如果你之前就在项目中用过自己编译JavaScriptCore ...

【js数据结构】可逐次添加叶子的二叉树(非最优二叉树)

最近小菜鸟西瓜莹看到了一道面试题: 给定二叉树,按层打印.例如1的子节点是2.3, 2的子节点是3.4, 5的子节点是6,7. 需要建立如图二叉树: 但是西瓜莹找到的相关代码都是用js构建最优二叉树, ...

hdu 4747 线段树

Mex Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submis ...

LeeCode数组第15题三数之和

题目:三数之和 内容: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中 ...

gunicorn启动flask项目的坑

问题描述:项目用的是flask框架,在项目上线的时候,服务器上是使用gunicorn来启动项目的.但是上线之后,发现服务成功启动了,也有正确的返回值,但是没有生成日志,而用python来启动服务的时候 ...

分析网络流量Capsa笔记

Capsa是一款网络分析仪,允许您监控网络流量,解决网络问题并分析数据包.通过提供生动的图表,通过设计良好的GUI提供丰富的统计信息和实时警报,Capsa可让IT管理员实时识别,诊断和解决有线和无线网 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值