转自:https://blog.csdn.net/lxf512666/article/details/52820368

hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性

sql是面向数据库表查询,格式:from + 表名 + where + 表中字段

在hibernate中使用原生sql查询

例如:

public User login(User user) throws Exception {
String sql = "select id,name,password,phone,address,email,regDate"
+ " from user as u where u.name = ? and u.password = ?";
Session session = sessionFactory.openSession();
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.setString(0, user.getName());
sqlQuery.setString(1, user.getPassword());
sqlQuery.addEntity(User.class);
Object obj = sqlQuery.uniqueResult();
session.close();
if (obj == null)
return null;
return (User) obj;
}

在hibernate中使用hql查询

例如:

public void modifyUserById(User user) {
Session session =
HibernateSessionFactory.getSession();
Transaction transaction =
session.beginTransaction();
String hql = "update User as u set u.userName = ?
,u.passWord = ? ,u.sex = ? where u.id = ? "; Query query = session.createQuery(hql);
query.setCacheable(false); query.setString(0, user.getUserName());
query.setString(1, user.getPassWord());
query.setString(2, user.getSex());
query.setString(3, user.getId()); System.out.println("执行了啊" + user.getUserName() +
user.getId()); query.executeUpdate();
transaction.commit();
session.flush();
session.close();
}

注意:在hibernate中占位符“?”填充参数下表从 0开始。

JDBC填充时占位符从1开始。

hibernate中给参数起别名方法填充 
List users = session.createQuery(“select u.id, u.name 
from User u where u.name 
like :myname and u.id=:myid”).setParameter(“myname”, “%张%”).setParameter(“myid”, 1) .list();

定义命名参数固定格式: :+参数名称(即:myid ),赋值时,直接写参数名即可: setParameter(“myid”, 1)

sql和hql的区别的更多相关文章

  1. NHibernate初学二之简单执行SQL及HQL、Linq

    上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...

  2. paip.取当天记录的方法sql跟hql hibernate

    paip.取当天记录的方法sql跟hql hibernate #------两个方法...函数法和日期计算法.. 函数法: DATEDIFF(d,createTime,GETDATE())=0   / ...

  3. sql datalength与len区别用法

    原文:sql datalength与len区别用法 len ( string_expression )参数:要计算的字符串 len() 函数len 函数返回文本字段中值的长度. sql len() 语 ...

  4. 数据库 --> SQL 和 NoSQL 的区别

    SQL 和 NoSQL 的区别   一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源), ...

  5. SQL、HQL、JPQL、CQL的对比

    SQL:全称结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据 ...

  6. SQL和HQL 区别浅析!!!

    hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在hiber ...

  7. Hibernate HQL和原生SQL查询的一点区别

    1.createSQLQuery 1.1默认查询的结果为BigDecimal 1.2通过addScalar("CGD_ID", StandardBasicTypes.LONG)可以 ...

  8. Oracle、Mysql、Sql Server语句的区别

    1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果ch ...

  9. 统计数据方面SQL与HQL

    因为HQL是面向对象的,所以对于统计数据方面使用HQL时不合适的,其实HQL最终还是会转化成SQL语句,项目里使用HQL语句应该是为了标准规范化. 统计的数据:同一个表,同一个字段,不同属性,统计不同 ...

随机推荐

  1. leetcode关于数组的问题

    关于数组的几道面试题 [Leetcode] 628. 三个数的最大乘积 解题思路: 这个一开始我是没想到思路的(除了遍历),因为有正负号的问题,后来看了一下别人的思路然后自己写的,思路是这样的: 三个 ...

  2. Entity Framework 与 LINQ to SQL

    Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题.下面的表中简要罗列了两种技术的主要区别. LINQ to SQL Entity Framework 复杂度 ...

  3. Gray Code leetcode java

    题目: The gray code is a binary numeral system where two successive values differ in only one bit. Giv ...

  4. CentOS中zip压缩和unzip解压缩命令详解

    以下命令均在/home目录下操作cd /home #进入/home目录1.把/home目录下面的mydata目录压缩为mydata.zipzip -r mydata.zip mydata #压缩myd ...

  5. java去除字符串的html标签

    //方法一 public String stripHtml(String content) { // <p>段落替换为换行 content = content.replaceAll(&qu ...

  6. Python3 比较两个图片是否类似或相同

    Python代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy import pytess ...

  7. 根据日期切换图片KFX

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 谢宝友:会说话的Linux内核

    我们本次开源专访的对象是一位认真钻研技术的工程师,谢宝友,他目前任职中兴通讯操作系统团队,他个人在业余时间前后共花费了6年时间完成了对Linux内核Linux 2.6.12内核源代码注释工作. 我们本 ...

  9. Linux 查看服务器配置

    //CPU cat /proc/cpuinfo |grep processor; //内存 free -g; //硬盘 df -h;

  10. JS将"\/Date(1530104033000)\/" 格式化

    JS将/Date(1446704778000)/转换成str: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...