【SSH】Hibernate:常用的HQL语句

Hibernate query language 简称HQL,是实际开发中最长的hibernate查询封装模式。

HQL提供了更加接近传统SQL语句的查询方法:

<span style="font-family:Verdana;font-size:14px;">[select/update/delete…] [from…][where…][groupby…] [having …][order by…]</span>

实体查询:

<span style="font-family:Verdana;font-size:14px;">String hql =”from TUser”;
Query query =session.createQuery(hql);
List uerlist = query.list();</span>

其中“from TUser ”==sql 中的select * from TUser。是插询所有实体,如果TUser下面有子类表,那么子类表的所有数据也都会查出来。

如何查询指定实体:

<span style="font-family:Verdana;font-size:14px;">String hql = “from TUser (as) userwhere user.name=’****’”</span>

属性查询:

查询所有实体的name属性集合:

<span style="font-family:Verdana;font-size:14px;">List list =session.createQuery(“selectuser.name,user.age from TUser as user”).list();</span>

查询age =15 的name属性集合:

<span style="font-family:Verdana;font-size:14px;">List list =session.createQuery(“selectuser.name,user.age from TUser as user where age =’15’”).list();</span>

更新:

<span style="font-family:Verdana;font-size:14px;">Transaction tx =session.beginTransaction();//引用事务
String hql =”update TUser set age =18 whereid =1”;
Query query =session.createQuery(hql);
.query.executeUpdate();
.tx.commit</span>

删除:

<span style="font-family:Verdana;font-size:14px;">     String hql=“delete TUser whereage=18”;</span>

上处的hql中,参数直接表示在hql中,这样会引发一个问题,类似原SQL中的SQL注入事件。例如当你登录输入用户名时: ‘liming’ or ‘x’=’x’,这样传入到hql语句时显示如下:

<span style="font-family:Verdana;font-size:14px;">      From TUser user where user.name=’liming’ or‘x’=’x’ and user.pwd=’***’ ……</span>

这时可以看出密码判断部分是逻辑真,既只要name值正确了,有没有密码都会成功登录的。于是类似于jdbc的SQL一样,hibernate通过顺序占位符“?”规避了这个问题。既在查询时将传入的参数用“?”代替。

HQL和SQL很类似,刚开始使用时还很不适应,现在回头看,两者是如此的相似。

时间: 2024-10-03 14:55:33

【SSH】Hibernate:常用的HQL语句的相关文章

hibernate中执行hql语句创建session需要的HibernateUtil类

import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sessionFactory = null; static { try { Confi

Hibernate 中update hql语句

今天在MySQL中用hibernate测试update语句发现以下问题: update语句竟然不去作用: 表机构如下: create table student(sid int primary key , sname varchar(45) not null, ssex char(2) not null,sdept varchar(10) not null,sage int ,saddress varchar(45) ); update语句如下: String[] params = new St

Hibernate入门(六)---------HQL语句

Query: 代表面向对象的一个Hibernate查询操作.在Hibernate中,通常使用session.createQuery()方法接收一个HQL语句,然后调用Query的 list()或uniqueResult()方法执行查询.所谓的HQL是Hibernate Query Language缩写,其语法很像SQL,但它是完全面向对象的. 在Hibernate中使用Query对象的步骤,具体: 1.获得Hibernate的Session对象 2.编写HQL语句 3.调用session.cre

hibernate中常用的Hql语句总结

// HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // >> 2,SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的. // >> 4,SELECT可以省略. // 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性) hql = "FROM 

常用的Hql语句(转)

原文地址:http://blog.csdn.net/v123411739/article/details/28644007     尊重原创,请访问原文地址 // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // >> 2,SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的. // >

常用的Hql语句

1 // HQL: Hibernate Query Language. 2 // 特点: 3 // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. 4 // >> 2,SQL查询的是表和表中的列:HQL查询的是对象与对象中的属性. 5 // >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的. 6 // >> 4,SELECT可以省略. 7 8 // 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性) 9

关于在SSH框架整合时,使用hql语句查询出现 XXX is not mapped 的问题

在做SSH框架的整合过程中,新手往往会遇到这个问题.当我们使用hql语句查询时,控制台报错: XXX is not mapped.而此时,很多觉得英语不错的同学就会被自己搞晕.然后开始检查实体类的映射文件*.hbm.xml是否正确,是否将映射文件添加到spring的配置文件中,等等.然后高亮一通,仍不见效. 我们开始正题.大家都知道,Hibernate是一个让我们完全面向对象编程的框架.也就是说,我们对数据库数据进行操作的时候,实际是通过实体类.在Hibernate中的查询方式有3种: (1)通

hibernate 之 HQL语句总结【转】

1. 查询整个映射对象所有字段 //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 String hql = "from Users"; Query query = session.createQuery(hql); List<Users> users = query.list(); for(Users user : users){ System.out.println(user.getName() + " : " + user.ge

hibernate -- HQL语句总结

hiberante 这个曾经火了一时的东西,现在项目用到了 被迫学习 from users会返回对象 select  id ,name from user 会返回数组. 我想返回 部分对象的内容 select user(id,name) from user; 直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段            String hql = "from Users";            Query query = session.createQuer