Hibernate写hql语句与不写hql语句的区别?

hql语句与不写hql语句的区别?

写hql语句:书写HQL语句,所有的查询与投影的设计均使用HQL语句完成。

不写hql语句:没有任何查询语句,所有的查询与投影的设计使用面向对象格式完成。

二者选用的时机:

不写hql语句,有时比较方便,在不考虑复杂的查询的情况下,可以使用,此方法把某些Hibernate的方法封装起来,不灵活。

hql语句,复杂的业务逻辑,建议使用,灵活方便。

 

以下通过俩种方法的对比来着重介绍一下hibernate不写hql的一种简单用法。

hql语句:

具有丰富的灵活性,可以提供强大的查询功能。

如:String hql = “ from User “ ,查询所有的User实体类所对应的数据库字段。

        Session session = this.getCurrentSession();

String hql = " from User ";

Query q = session.createQuery(hql);

List<User> users = q.list();

return users;

 

如:String hql= “ update User user set user.age=22 where user.age=12 ”;更新User实体类所对应的数据记录。

        Session session = this.getCurrentSession();

String hql = " update User user set user.age=22 where user.age=12 ";

Query q = session.createQuery(hql);

q.uniqueResult();

return null;

 

如:String hql=” delete from User user where user.age=19 ”;  删除User实体类所对应的数据记录。

        Session session = this.getCurrentSession();

String hql = " delete from User user where user.age=? ";

Query q = session.createQuery(hql);

q.setParameterList("age", age);

        q.executeUpdate();

return null;

 

 

不写hql语句:

查询User实体类所对应的数据库字段数据,可以用一下方法:

//得到User对应的数据中的所有的数据记录

public List<User> getDepList()throws Exception{

     DetachedCriteria dc =  DetachedCriteria.forClass(User.class);

         return getHibernateTemplate().find(dc);

}

DetachedCriteria 为离线查询。

若要构造相应的条件查询,可以如下所示:

public List<User> getDepList()throws Exception{

    DetachedCriteria dc =  DetachedCriteria.forClass(User.class);

         if(user != null){

        if(user .getName()!=null && !user .getName().equals("")){

          dc.add(Restrictions.ilike("name", user.getName(), MatchMode.ANYWHERE));

    }

    if(user.getTele()!=null && !user.getTele().equals("")){

          dc.add(Restrictions.ilike("tele",user.getTele(), MatchMode.ANYWHERE));

           }

    }

    return getHibernateTemplate().find(dc);

}

Restrictions为投影查询,里面封装了各种查询条件,如上面,ilike()表示模糊查询,里面的三个参数,分别代表“数据库字段”、“所对应的字段值”、“模糊查询匹配模式”。

另外模板中封装了好多关于查询条件的方法:

 

 

若要增加一条记录,可以参照以下方法:

         getHibernateTemplate().save(user);

         直接用模板保存一个实体类,在此之前应把数据封装到user实体类中。

另外模板中还封装了其他的一些save类似的方法:

 

 

若要修改表中某条记录,可以参照以下方法:

getHibernateTemplate().update(user);

同样用模板直接更新即可。

另外模板中还有封装了一些和更新有关的类似的方法:

 

 

若要删除表中的某条记录,可以参照如下的方法:

getHibernateTemplate().delete(user);

同样直接使用模板即可完成。

另外模板中还有封装了一些和删除有关的类似的方法:

 

 

由于知识有限,写的比较单薄,望指导赐教。

 

转载于:https://www.cnblogs.com/wanghui1316/p/5498612.html

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

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

相关文章

eclipse的servlet默认不执行index_MySQL之索引及执行计划分析

mysql官方对索引的定义为&#xff1a;索引(index)是帮助MySQL高效获取数据的数据结构。索引的本质&#xff1a;索引是数据结构。索引就是排好序的快速查找数据结构一般来说索引本身也很大不可能全部存储在内存中&#xff0c;因此索引往往以索引文件的形式存储在磁盘上平时所说的…

Chapter3-1_Speech Separation(Deep Clustering, PIT)

文章目录1 内容简述2 评价指标2.1 Signal-to-noise ratio (SNR)2.2 Scale invariant signal-to-distortion ratio (SI-SDR)2.3 其他的评价指标3 Permutation Issue4 Deep Clustering5 PIT本文为李弘毅老师【Speech Separation - Deep Clustering, PIT】的课程笔记&#xff0c;课…

Joi验证模块的使用

1. 安装 官网中文文档&#xff1a;https://joi.dev/api/?v12.1.0#validatevalue-schema-options-callback //下载14.3.1 npm install 14.3.1注意&#xff1a;下载14.3.1&#xff0c;在npm install joi的时候默认下载的是最新版本 joi17.1.1,对于一些API高版本会舍弃从而出现…

穷养富养知乎见解

真正的“穷养”&#xff0c;应该是不惯着&#xff0c;让他知道要想得到需要付出&#xff0c;而不是让他认为就是没有&#xff0c;无论如何不能得到。真正的“富养”&#xff0c;应该是为他提供所有成长的条件和选择的权利&#xff0c;而不是一味的满足他的欲望&#xff0c;却不…

python导入模块以及类_python—模块导入和类

1.查询模块&#xff1a;按目录依次查找需要导入的模块&#xff0c;模块目录一般在&#xff1a;/usr/lib64/python2.7 In [2]: sys.path Out[2]: [, /usr/bin, /usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg, /usr/lib64/python27.zip, /usr/l…

Chapter3-2_Speech Separation(TasNet)

文章目录1 TasNet总体架构2 Encoder和Decoder3 Separator4 TasNet回顾5 More5.1 Unknown number of speakers5.2 Multiple microphones5.3 Visual information本文为李弘毅老师【Speech Separation - TasNet】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&…

Node 中的开发环境与生产环境 和 使用Morgan打印请求信息

一、什么是开发环境与生产环境 环境&#xff0c;就是指项目运行的地方&#xff0c;当项目处于开发阶段&#xff0c;项目运行在开发人员的电脑上&#xff0c;项目所处的环境就是开发环境。当项目开发完成以后&#xff0c;要将项目放到真实的网站服务器电脑中运行&#xff0c;项…

【转】java单例模式的实现

感觉总结得很好&#xff0c;分享一下&#xff0c;原文&#xff1a;http://blog.csdn.net/shiqining888/article/details/51405932 转载于:https://www.cnblogs.com/just84/p/5499228.html

Chapter4-1_Speech_Synthesis(Tacotron)

文章目录1 TTS before End-to-end2 Tacotron2.1 Encoder2.2 Attention2.3 Decoder2.4 Post processing3 How good is Tacotron?本文为李弘毅老师【Speech Synthesis - Tacotron】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中…

python基础编码规范_Python语言的基本语法和编码规范.doc

Python 语言的基本语法和编码规范 Python 编程教程教师 : 工作 :Python 语言的基本语法和编码标 准课程描述本章将介绍 Python 语言的基本语法和编码标准&#xff0c;重点介 绍 Python 语言的基本知识&#xff0c;如数据类型、运算符、常量、变量、表 达式和常用语句&#xff0…

第三方模块config的使用

作用&#xff1a;允许开发人员将不同运行环境下的应用配置信息抽离到单独的文件中&#xff0c;模块内部自动判断当前应用的运行环境&#xff0c; 并读取对应的配置信息&#xff0c;极大提供应用配置信息的维护成本&#xff0c;避免了当运行环境重复的多次切换时&#xff0c;手动…

ACM/ICPC 之 Floyd练习六道(ZOJ2027-POJ2253-POJ2472-POJ1125-POJ1603-POJ2607)

以Floyd解法为主的练习题六道 ZOJ2027-Travelling Fee //可免去一条线路中直接连接两城市的最大旅行费用&#xff0c;求最小总旅行费用 //Time:0Ms Memory:604K #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using nam…

Chapter4-2_Speech_Synthesis(More than Tacotron)

文章目录1 Mispronunciation2 More information for Encoder3 Attention4 Fast Speech and DurIAN5 Dual Learning5 Controllable TTSSpeaker EmbeddingGST-TacotronTwo-stage Training本文为李弘毅老师【Speech Synthesis - More than Tacotron】的课程笔记&#xff0c;课程视…

art-template模板引擎详解

1. 模板引擎 art-template中文文档&#xff1a;https://www.kancloud.cn/lanju/art-template/1500276 1.1 Ajax 项目中存在的问题 数据和HTML字符串拼接导致代码混乱&#xff0c;拼接容易出错&#xff0c;增加修改难度。 业务逻辑和用户界面混合&#xff0c;代码不易维护。 …

python3语法糖_Python笔记3:语法糖

运算 数字运算 运算会根据结果自动判断结果是int还是float 用到除法的时候&#xff0c;结果自动输出为float 双斜杠//得到的结果是int 取模(余数)还是% >>> 22 4 >>> 50-5*6 20 >>> (50-5*6)/4 5.0 >>> 8/5 1.6 >>> 5.0/1.6 3.12…

【代码笔记】iOS-清除图片缓存UIActionSheet

一&#xff0c;效果图。 二&#xff0c;代码。 RootViewController.m //点击任何处出现sheet -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {UIActionSheet * sheet [[UIActionSheet alloc] initWithTitle:"确定要清空图片缓存&#xff1f;" d…

Chapter5_Speaker_Verification

文章目录1 Task Introduction2 模型架构3 模型介绍3.1 i-vector3.2 d-vector3.3 x-vector3.4 more4 End to End本文为李弘毅老师【Speaker Verification】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自于李宏毅…

python如何读取字典的关键字_python提取字典key列表的方法

python提取字典key列表的方法 更新时间&#xff1a;2015年07月11日 12:04:48 作者&#xff1a;企鹅不笨 这篇文章主要介绍了python提取字典key列表的方法,涉及Python中keys方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python提取字典key列表的方法…

使用express搭建服务器获取MySQL数据库数据

一、原始的mysql查询方法 先安装mysql cnpm install mysql --save 引入这个db.js之后&#xff0c;才能对数据库进行查询 进行查询 查询结果如下&#xff1a; 二、ORM 介绍 ORM 全拼Object-Relation Mapping. 中文意为 对象-关系映射. 主要实现模型对象到关系数据库…

java GZIP压缩和解压

最近碰到了一个按GZIP解压指定的输入流数据&#xff0c;备份下 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream;/*** 压缩&#xff…