Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询

hql语句和sql语句不同,当我们使用hql语句查询时,要把SQL语句的表写成 实体类的类名,字段写成实体类的属性

  1. 基本查询:查出数据库中所有的数据
    代码如下:
//基本查询,查询所有的实体@Testpublic void test1() {//获取当前线程的sessionSession s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();Query query = s.createQuery("from Customer");List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}

我们应当注意这段代码:

Query query = s.createQuery("from Customer");

执行的hql语句是:from Customer
但如果我们使用sql,语句是:

select * from  cst_customer(cst_customer是我数据库中的表名)

其中我们可以发现,使用hql只要把sql的表名换成实体类名就可以了,而且 select * 都可以不要

  1. 条件查询:按条件查询出数据库的数据
    代码如下:
//条件查询@Testpublic void test2() {Session s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();//Query query = s.createQuery("from Customer where custName = ?");//取别名Query query = s.createQuery("from Customer where custName = :custName");//query.setString(0, "23");//query.setParameter(0, "23");query.setParameter("custName", "23");List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}

当我们使用条件查询时,我们不仅要把表名换成实体类,还要把数据库的列名换成属性名:

from Customer where custName = ?

然后使用下面代码设置参数:

query.setString(0, "23");

可以发现我把这些代码注释掉了,这些方法不够具体,我们可以使用别名设置参数,如下代码

from Customer where custName = :custName

:后面的是别名,我们给参数赋值时可以使用一下代码就不用考虑具体参数的类型了

query.setParameter("custName", "23");
  1. 排序插叙:order by
//排序查询@Testpublic void test3() {Session s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();//根据custId排序Query query = s.createQuery("from Customer order by custId");List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}
  1. 分页查询:使用 order by ,在后面加上属性名就可以了
@Testpublic void test4() {Session s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();//查询全部数据,每页显示两条数据Query query = s.createQuery("from Customer");query.setFirstResult(0);query.setMaxResults(2);List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}
  1. 投影查询: 当我们在查询实体时,只需要部分实体的属性。并且希望返回的结果使用实体类封装,而不是Object[]
    使用步骤:1、查询语句需要使用new关键字
    2、在实体类中添加对应参数列表的构造函数

代码如下:

@Testpublic void test5() {Session s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();Query query = s.createQuery("select new domain.Customer(custId,custName) from  Customer");List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}

在实体类中添加对应参数列表的构造函数,注意无参构造函数实体类中一定不能省

public Customer(Long custId, String custName) {this.custId = custId;this.custName = custName;}

注意在使用hql语句时,实体类要加上路径,因为在一个工程里,当有多个相同类名,就不知道创建那个实体类了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】小周立波张冯喜引爆达人秀 小童星家居照大曝光

原文地址:http://www.soufun.com/news/2010-10-13/3897753.html 小小年纪,一身西装,发式清爽,腔调十足,有观众说她“天才有余,天真不足”,她自己说“进演艺圈太累了”,刚踏进演艺圈就…

mysql命令教学_mysql常用命令有什么

mysql常用命令有:1、“create database name;”;2、“use databasename;”;3、“drop database name”;4、“show tables;”;5、“select version”等等。MySQL 数据库常用命令1、MySQL常用命令create database name; …

Struts2一对多配置

在多表映射配置时,我们应该遵循以下不步骤: 确定两张表之间的关系在数据库中实现两张表之间的关系建立在实体类中描述出两个实体类之间的关系在映射配置文件中建立两个实体和两张表之间的关系 我们就按照上面的步骤做,我这里有一张联系人表和…

调整和改编赛车游戏——游戏屏幕

游戏屏幕 赛车游戏中有很多不同的游戏屏幕,这些都是由RacingGame类中的gameScreens堆栈管理的。本节介绍游戏中使用的大部分屏幕和对应的功能。大多数游戏屏幕相当简单,但其他的有点复杂并实现了一个单元测试,通过单元测试能更好地了解这个类…

mysql 锁 代码_MySQL中的锁实例

表结构:id:自增主键,a:无索引,b:普通索引CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,a int(4) NOT NULL DEFAULT 0,b int(4) NOT NULL DEFAULT 0,PRIMARY KEY (id),KEY b (b) USING BTREE) EN…

Linux文件属性之r、w、x

r: 对于文件来说,具有读取文件内容的权限;对于目录来说,具有浏览目录内文件的权限 w: 对于文件,具有修改文件内容的权限;对于目录,具有新建、删除、移动、修改文件目录内的权限 …

trie树--详解

MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 文章作者:yx_th000 文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。关键词:trie trie树 数据结构前几天学习了并查集和trie树&am…

yii mysql gii_Yii Gii使用

准备数据库第1步 - 创建一个新的数据库。数据库可以通过以下两种方式进行。在终端运行 mysql -u root –p登录数据后,通过执行 CREATE DATABASE mystudy CHARACTER SET utf8 COLLATE utf8_general_ci; 创建一个新的数据库;第2步 - 在 config/db.php 文件中配置数据库…

通过OracleDataReader来读取BLOB类型的数据 (转载)

通过OracleDataReader来读取BLOB类型的数据 在实际的应用过程中,需要把大块的二进制数据存储在数据库中。读取这些大块的数据,可以通过强制类型转换成为byte数组,但是当这个二进制数据体够大时(几十兆或者上百兆)&…

PHP简介

PHP原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”。PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了…

java 事务_Java中事务总结详解(精华)

1.什么是JAVA事务?通常的观念认为,事务仅与数据库相关。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。事务的原子性:表示事务执行过程中的任何失败都…

ellen 纽奥良大学演讲

英 文 中 文 Thank you, President Cowan, Mrs. President Cowen; distinguished guests, undistinguished guests - you know who you are, honored faculty and creepy Spanish teacher. And thank you to all the graduating class of 2009, I realize most of you are hu…

xampp启动Apache端口被占用,修改端口

apache启动端口被占用有可能是80端口被占用,也用可能是443端口被占用。修改这两个端口方法如下: 首先打开xampp,点击下图的config 如果是80端口被占用,选择httpd,conf,会自动打开这个文件,然后在文件里查找80 找到以…

java怎么获取当前日期_JAVA中获取当前系统时间

一. 获取当前系统时间和日期并格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString {public static void main(String[] args) {SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.o…

Microsoft SharePoint Server 2010 的新增功能

Microsoft SharePoint Server 2010 包括几个关键的增强和新增功能。重新设计的用户界面中的功能区通过将命令放置到更易于导航的基于任务的选项卡上,来帮助您更快地完成工作。可以跨多个 Internet 浏览器工作,例如 Microsoft Internet Explorer 7.0 和 8…

php四种定界符

1.标准风格 <?php//代码 ?>2.短标记风格 <?//代码 ?>默认情况下是不可以这样写的&#xff0c;我们要到php.ini文件里修改一个配置 找到php.ini文件,我用的是xampp,所以就是以他为例&#xff0c;其他找到php.ini文件方法百度一下就知道了 点击Apache的config&…

周易Java_周易API接口_免费数据接口 - 极速数据

package api.jisuapi.zhouyi;import java.net.URLEncoder;import api.util.HttpUtil;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Search {public static final String APPKEY "your_appkey_here";// 你的appkeypublic static final …

SharePoint SiteCollection 和SubWeb之间的迁移

因为各种不同的原因&#xff0c;项目里可能碰到需要将一个Site Collection迁移为一个子站点的情况。 实现这种需求只能用 内容部署功能中的导出和导入〉 SiteCollectoin to sub web 示例&#xff1a; cd C:\Program Files\Common Files\Microsoft Shared\web server extensions…

php中文乱码问题

访问我的php文件&#xff0c;出现了乱码 解决方法如下&#xff1a; 方法1&#xff1a;加上meta标签&#xff0c;设置字符格式 例如&#xff1a; <?phpecho <meta charset"utf-8">;echo "小河流水人家"; ?>访问就不会乱码了&#xff0c;注…

java 文件转换字符串_java字符串文件互相转换

Java字符串与文件的互转Java中有时候需要读取一个文本类的文件,将其转换为字符串&#xff0c;然后做进一步处理。Java中没有现成的API方法&#xff0c;自己手动实现一个&#xff0c;大家来分享。一、字符串转换为文件/*** 将字符串写入指定文件(当指定的父路径中文件夹不存在时…