hibernate之动态生成SQL

hibernate实现动态SQL查询 hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL 立即下载

 

动态sql生成

 

默认情况下,hibernate在启动时给每个持久化类创建SQL语句。这些语句是用来读取单个行,删除一行等的简单创建,读取,更新和删除。

hibernate在启动时如何创建UPDATE语句?毕竟,这时候还不知道要更新的列。答案是生成的SQL语句更新所有的列,并且如果特定列的值没有被修改,这个语句就会把它设置为它的旧值。

在有些情况下,例如包含几百列的一个遗留表,在该表中,即使最简单的操作(假使只有一个列需要更新)的SQL语句也将很大,必须关闭这个启动时的SQL生成,并切换到运行时生成的动态语句。

<class>映射元素中有两个属性可以禁用启动时CRUD SQL的生成:

<class name="Item" dynamic-insert="true" dynamic-update="true">

...

</class>

dynamic-update="true" : 动态生成update-SQL语句,只update被修改的字段。

dynamic-insert="true" : 动态生成insert-SQL语句,只包含非空值的字段。

 


 

pom.xml:

 

 

resources/proxool.xml:

 

 

resources/hibernate.cfg.xml:

 

 

HibernateTest/Student.java:

 

 

HibernateTest/Student.hbm.xml:

 

 

util/HibernateUtil.java:

 

 

util/StudentManager.java:

 

 

打印的sql为:

 

 

企业如何利用群晖 NAS 构建高效数据备份与容灾体系 群晖 NAS 不仅是一个企业级文件存储设备,更是一个完整的数据保护平台。通过 Active Backup for Business、快照技术和多层次容灾方案,企业可以在确保数据安全的同时,实现业务的高可用与持续性。在当今充满不确定性的环境下,企业应将数据备份与容灾体系作为 IT 战略的重要组成部分,而群晖 NAS 则是一个值得信赖的核心基石。 阅读详情

相关推荐

利用Nginx反向代理实现GitLab自定义域名的高效配置

本文详细介绍了如何利用Nginx反向代理实现GitLab自定义域名的高效配置。通过统一域名管理、性能优化和安全加固,提升GitLab的访问效率和安全性。文章包含前期准备、GitLab基础配置、Nginx反向代理设置及常见问题排查,帮助开发者快速完成部署。

weixin_28834169的博客 163

Hibernate学习2 - 懒加载(延迟加载)、动态SQL参数、缓存

Hibernate学习2 - 懒加载(延迟加载)、动态SQL参数、缓存

weixin_39651356的博客 1013

实战指南:彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例

本文详细介绍了如何彻底清除TIA Portal卸载后遗留的SQL Server WinCC实例,解决重新安装时的冲突问题。通过控制面板排查、注册表验证、安全卸载操作流程和注册表深度清理等步骤,确保完全移除残留组件,避免系统崩溃。文章还提供了安装环境重建策略和预防措施,帮助工程师高效管理西门子自动化软件。

weixin_30482181的博客 404

hibernate动态sql查询(仿ibatis查询)

项目中使用hibernate作为数据持久层框架,主要考虑hibernate在进行一些简单的crud操作时非常便利,不需要和ibatis似的为每个sql操作都写一堆文件,但是同时也带来了一些局限性,如类似ibatis强大的动态查询功能用不了了,看着别人用hibernate拼sql语句一串串if else,吓死个人,此时想到了ibatis强大的动态语句查询,一咬牙,百度之,自己思考测试一下,仿制iba

Coolyqq的专栏 4568

雷达原理习题答案【西电】

  目前教材用的是陈老师新版的,但是,我发现课后题有一部分是之前某本书里的。答案如下【建议参看原题→查阅答案】 【原题点这里!!点这里!!】 目录跳转功能目前好像只支持网页版 文章目录% 第一章、第二章% 第三章% 第四章% 第五章% 第六章% 第七章% 第八章 % 第一章、第二章 % 第三章 % 第四章 % 第五章 % 第六章 % 第七章 % 第八章 ...

薛定谔的壳的博客 1万+

App 抓包难?Frida Hook 实战:绕过 SSL Pinning (证书绑定) 抓取某大厂 App 核心接口

当我们使用 Charles 抓包 HTTPS 时,本质上是实施了MITM(中间人攻击)。Charles 伪装成服务器,发给 App 一个自己的证书(伪造证书)。Charles 伪装成 App,拿着真正的证书去请求服务器。如果 App 只是简单校验“证书是否由受信任的 CA 签发”,那你把 Charles 的根证书安装到手机系统里,就能骗过它。但是,是 App 内置了服务器证书的Hash(指纹)。

BUG猿的博客 914

Hibernate 如何自动生成 SQL 语句

本节课和大家一起聊聊 Hibernate 是如何自动生成 SQL 语句的。反射在框架中的重要性;元数据描述对 Hibernate 的重要性。

很酷的站长的博客 1706

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

baidu_35680696的博客 964

Hibernate创建执行sql的具体实现 java

4. 创建执行sql的具体实现 一般在工作中,只需要创建前面三种即可,然后通过对应的servic类去调用比如:getSession().save();getSession().update();方法等等,但是如果没有写sql执行类,我们就需要自己写(即getSession().save()背后的逻辑实现),这个没有什么好说的,基本上不会有任何改动,使用时直接复制就行。 package com.fhb.egms.dao; import java.io.Serializable; import java.ut

weixin_46112273的博客 841

移动端 AI 部署:ONNX Runtime + Android 从模型到 App

移动端 ONNX 部署的流程是 PC 端导出 ONNX → 放到 Android 项目 assets → ONNX Runtime AAR 加载推理。核心是OrtSession,预处理在 Java 层用 Bitmap 操作完成。建议先在 PC 上用 onnxruntime Python 验证模型正确,再集成到 Android 端,可以减少定位问题的时间。ONNX Runtime 自动调用 NNAPI,在主流芯片上不需要额外适配。

know_F0727的博客 71

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 906

模拟Hibernate动态生成SQL语句

这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http:/...

weixin_30537391的博客 225

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hibernate动态生成SQL

因为以前一直用的IBATIS,现在这个项目用的HIERNATE,不能写动态SQL,写一堆的IF/ELSE很不习惯,而且代码看 着特别不爽,于是打算自己封装。网上查了下,刚好有人写了这方面的文章,正好拿来用,文章地址。这个文章没有 把全部的代码贴出来,而且看到下面评论好多人在要,在此把代码放出来共享。

fkbush的专栏 1716

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Hibernate3的DetachedCriteria支持-构造动态生成SQL语句

Hibernate3支持DetachedCriteria,这是一个非常有意义的特性!我们知道,在常规的Web编程中,有大量的动态条件查询,即用户在网页上面自由选择某些条件,程序根据用户的选择条件,动态生成SQL语句,进行查询。   针对这种需求,对于分层应用程序来说,Web层需要传递一个查询的条件列表给业务层对象,业务层对象获得这个条件列表之后,然后依次取出条件,构造查询语句。这里的一个难点是

小樓東風的专栏 3994

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Hibernate的原理

<br />JDBC编程中,开发者通过在DAO层编写INSERT SQL语句插入数据,编写UPDATE 语句保存数据,编写DELETE语句删除数据,通过SELECT语句查询数据。<br />在Hibernate中,原理也是一样的,只不过Hibernate充当了DAO层,根据POJO与实体类的映射配置自动生成相应的SQL语句。从控制台可以看到Hibernate生成的SQL语句。<br />JBDC中的SQL语句是又开发者事先写好的,而Hibernate中的SQL语句是动态生成的。<br />因此如果实体类发生

xiaowenzi8212007的专栏 386

hibernate 动态生成HQL

关于hibernate 动态生成HQL 如果经常更改 某个字段 小范围的更改 建议打开动态生成    动态update对性能还有一个重大的影响,就是打开了以后,不同的对象的sql语句会不一样,如果你一次更新多条记录,hibernate将不能使用 executeBatch进行批量更新,这样效率降低很多。同时,在这种情况下,多条sql意味着数据库要做多次sql语句编译。 hiber

lzeog48466的专栏 608

hibernate 注解@Formula解析和使用简介

一.hibernate 注解@Formula即hibernate提取属性也叫做计算属性,该属性值是一个值读属性,是通过使用sql语句获取得到的,常用的是统计数据。 例如:我有一个employee实体类,该类有主键Id或name,月薪水(monthlySalary)等属性(字段),你现在有一个想法想要获取该employee的年薪,计算方式是月薪*12个月=年薪。 package net.ozar

kakolukiya的博客 7494

java注解,通过反射解析注解,模仿hibernate,获取sql语句。

常用注解: 自定义注解,标准格式: 1,target:注解作用域 2,Retention:声明周期 运行子类继承,但是子类继承只能作用到类注解,字段注解,是继承不了的。 使用注解:通过下面这种方式,为注解的成员赋值,使用的时候会通过成员名,找到这些值,去使用这些值。 如果注解只有一共成员,该成员必须命名为value,这样使用注解的时候方便:如:@注解...

weixin_30613433的博客 93

Hibernate 动态 HQL

Hibernate 动态 HQL 在开发的时候,很多时候都遇到过需要动态拼写SQL,有的是在配置文件中写SQL,有的是在Java代码中拼写SQL,以配置文件拼SQL的可以拿IBatis为代表,但是很多时候是使用Hibernate的,这个时候就想要是Hibernate能像IBatis那样写就好了。这个时候就想到了模板语言和配置文件的结合。模板引擎可以选择Velocit...

我的java空间 347

dynamic-insert dynamic-update mutable="false" (让hibernate生成的sql不包括所有字段、指定不可变的实体)

Hibernate生成update语句,会更新所有的列。  在有些情况下,例如包含几百列的一个遗留表,在该表中,即使最简单的操作的sql语句也很大,必须关闭这个启动时  的sql生成,并切换到运行时生成的动态语句。当大量实体时,也会影响启动时间,因为hibernate必须为CURD提前生  成所有SQL语句:  区别就是:  Hibernate: insert into USER (us

java相关技术(partner4java专栏)希望对您的学习有所帮助 2666

hibernate 多条件组合查询之sql拼接

hibernate 多条件组合查询之sql拼接  [java] view plain copy print?public static void main(String[] args) {  Session session = null;   Transaction tx = null;   List list = null;   Criteria criteria = null;   try {

JEECG官方博客 3682

HOW TO ORDER BY A CUSTOM SQL FORMULA/EXPRESSION WHEN USING HIBERNATE CRITERIA API

In our current project we are using Spring + Hibernate Annotations. Today I needed to use something like: 1 2 3 SELECT DISTINCT t.id FROM MyClass t WHERE ..... ORDER BY (a + b) DES

huaishuming的专栏 465

java 动态sql生成_java优化Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

最近在使用Hibernate4中,发现两个很有奥秘的注解@DynamicInsert 和@DynamicUpdate如果是在配置文件的话那就是dynamic-insert和dynamic-update 例如:“<class name="model.User" table="Users" dynamic-insert="true" dynamic-update="true">”这两...

weixin_39986896的博客 488

【Hibernate】Hibernate基本原理及概念详解

       hibernate是一种ORM框架(全称为Object-Relative Database-Mapping,在java对象与数据库之间建立某种映射,以实现直接存取java对象(一般为POJO)),与各种数据库,SQL语句打交道,是数据持久化的一种解决方案。ORM框架是不同于MVC的另一种思想框架,适用范围也与MVC截然不同。类似功能的框架还有SUN的JDO、Oracle公司的TopL...

lmb55的专栏 5770

通过velocity模板和Hibernate sql-query的实现动态hql

在开发的时候,很多时候都遇到过需要动态拼写SQL,有的是在配置文件中写SQL,有的是在Java代码中拼写SQL,以配置文件拼SQL的可以拿IBatis为代表,但是很多时候是使用Hibernate的,这个时候就想要是Hibernate能像IBatis那样写就好了。 原创不易,转载请注明出处:通过velocity模板和Hibernate sql-query的实现动态hql 代码下载:http:/...

云淡风轻、仅此一抹 266
上一篇: hibernate之整合proxool
下一篇: hibernate之脏数据检查
fhd001
博客等级 码龄19年 169粉丝 420原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值