按主键查询

 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<Emp> 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<Emp> emps = empDao.findEmp();
for (Emp e:emps) {
System.out.println(e.getEname());
}
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
}
}

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

 public Iterator<Emp> findAll(){
String hql ="from Emp"; //定义hql
Query query = HibernateUtil.currentSession().createQuery(hql);
return query.iterate(); //执行查询
}
public Iterator<Emp> findAllEmps(){
Transaction tx=null;
Iterator<Emp> 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<Emp> 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<Emp> 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<Emp> 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();
}
}

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

我们再来看下数据库中

投影

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

hibernate连接oracle数据库进行查询的更多相关文章

  1. hibernate 连接 oracle数据库

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

  2. hibernate连接oracle数据库

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

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

    <?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC          &qu ...

  4. php连接oracle数据库转载

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

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

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

  6. C#连接Oracle数据库查询数据

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

  7. 连接Oracle数据库的Hibernate配置…

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

  8. java连接Oracle数据库

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

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

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

随机推荐

  1. mockito 初识

    转载:http://blog.csdn.net/zhoudaxia/article/details/33056093 在平时的开发工作中,经常会碰到开发进度不一致,导致你要调用的接口还没好,此时又需要 ...

  2. canvas玩转微信红包

    CSS3相关属性: <!DOCTYPE html> <html> <head lang='en'> <meta charset='UTF-8'/> &l ...

  3. 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串

    一.概述 不同格式的JSON串传到后台来实现功能这个是我们经常要做的一件事,本篇博客就给大家介绍四种不同的JSON串传到后台后台如何用@RequestBody解析这些不同格式的JSON串的. 二.代码 ...

  4. wxpython 界面布局

    1.frame.Centre() 窗口出来后显示居中 2.textCtrl文本框style=wx.TE_PASSWORD密码, wx.TE_MULTILINE多行输入 3.单选按钮组 4.列表 5.图 ...

  5. 快速开始Python/WSGI应用程序

    快速开始Python-wsig应用程序 官方参考文档 安装 uwsgi 安装 pip install uwsgi uwsgi --version # 查看 uwsgi 版本 测试 uwsgi 是否正常 ...

  6. C#中将dll汇入exe z

    用了3层架构,运行目录下有很多dll文件,最终发布时,我打算将dll文件都合并到exe文件中去.微软发布的免费软件ILmerge可以完成这项工作,研究了一下,其用法如下: 1.合并file1.dll. ...

  7. Elasticsearch 5.1.1 head插件安装指南

    一.下载安装包 下载Elasticsearch 5.1.1 下载地址:https://www.elastic.co/downloads/elasticsearch zip和tar格式是各种系统都通用的 ...

  8. 前端开发css禁止选中文本

    在我们日常的Java web前端开发的过程中呢,程序员们会遇到各种各样的要求,所以不每天学的东西感觉自己都退步了,都更不上时代的发展了. 每天应对各种需求,每天活在疑问中就是我们程序员的真是写照.但我 ...

  9. UOJ 48 次最大公约数

    次最大公约数 = gcd / 其中一个数质因数中最小的. gcd(42,12) = 6;    div(42) = 2*3*7   div(12) = 2^2*3 sgcd(42,12) = 6 / ...

  10. css布局-响应式布局

    响应式设计 .在不同设备上正常使用 .一般主要处理屏幕大小问题 .主要方法: .隐藏 + 折行 + 自适应空间 .rem/viewport/media query 第一个案例 <!DOCTYPE ...