博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate(二)
阅读量:5093 次
发布时间:2019-06-13

本文共 1908 字,大约阅读时间需要 6 分钟。

Hibernate   Hql语句

Emp表

public class Emp {    private Integer empno;    private String ename;    private String job;    private Integer mgr;//经理    private Date hiredate;    private Double sal;    private Integer comm;    private Integer deptno;}

  

1.from子句

Hibernate中最简单的查询语句的形式如下:

from eg.Cat

该子句简单的返回eg.Cat类的所有实例。 通常我们不需要使用类的全限定名, 因为 auto-import(自动引入) 是缺省的情况。 所以我们几乎只使用如下的简单写法:

from Cat

大多数情况下, 你需要指定一个别名, 原因是你可能需要 在查询语句的其它部分引用到Cat

from Cat as cat

这个语句把别名cat指定给类Cat 的实例, 这样我们就可以在随后的查询中使用此别名了。 关键字as 是可选的,我们也可以这样写:

from Cat cat

子句中可以同时出现多个类, 其查询结果是产生一个笛卡儿积或产生跨表的连接。

from Formula, Parameter
from Formula as form, Parameter as param

查询语句中别名的开头部分小写被认为是实践中的好习惯, 这样做与Java变量的命名标准保持了一致 (比如,domesticCat)。

 

2.查询N个字段

2.1

Hibernate hql语句 中  select * from  表名   不支持 * 的操作也就是说你若想查询多列,只能将列明一一列出来

例如 : select  e.ename,e.job from Emp e

2.2

像上方1.1的方法就可以完成一张表的多条件查询,但是因为返回值的不确定性和返回值得零散性使得出现了另一种可以优化的方案:

2.2.1

在实体类中添加一个代参构造(构造方法中的参数数量由你所要查询的列数来决定:如上我就需要添加一个包含ename和job的构造)

2.2.2

修改hql语句 :select new Emp(e.ename,e.job)from Emp e

3.hql 占位符  ?,:

3.1 ?

Hibernate 中的占位和JDBC中的很像,主要用作占位

String sql="from Emp where ename=?";Query query = session.createQuery(sql);query.setParameter(0, "SMITH");

3.2 .1:普通占位

String sql="from Emp where ename=:name";        Query query = session.createQuery(sql);        query.setParameter("name", "SMITH");

  这种占位的:后的占位名不需要和javabean中的属性一致,但是建议一致

3.2.2:用于实体占位

String sql="from Emp where ename=:ename";        Query query = session.createQuery(sql);          Emp emp=new Emp();          emp.setEname("SMITH");       query.setProperties(emp);

  这种用法的好处是可以不需要重复使用query.setParameter();方法,但是前提示:后的占位必须和javabean对应

4.hql 分页

 

    String hql="from Emp d order by d.empno";        Query query = HibernateUtil.getSession().createQuery(hql);        int index=1;        int size=3;        query.setFetchSize((index-1)*size);        query.setMaxResults(size);

  注意该方法的分页是从0开始的

 

 

 

转载于:https://www.cnblogs.com/wy0119/p/8118113.html

你可能感兴趣的文章
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>
监督学习模型分类 生成模型vs判别模型 概率模型vs非概率模型 参数模型vs非参数模型...
查看>>
Mobiscroll脚本破解,去除Trial和注册时间限制【转】
查看>>
实验五 Java网络编程及安全
查看>>