hibernate5 教程(怎样在hibernate的HQL语句中使用mysql 的自定义函数)

本文目录
- 怎样在hibernate的HQL语句中使用mysql 的自定义函数
- 在hibernate中org.hibernate.dialect.MySQL5Dialect和MysqlDialect应该用哪个呢
- 使用hibernate5需要哪些 jar包
怎样在hibernate的HQL语句中使用mysql 的自定义函数
这时就需要重新定义hibernate的方言(dialect),将你需要用到的进行注册;
这里提到一个方言(dialect)的概念:
Hibernate底层依然使用SQL语句来执行数据库操作,虽然所有关系型数据库都支持使用标准SQL语句,但所有数据库都对标准SQL进行了一些扩展,所以在语法细节上存在一些差异,因此Hibernate需要根据数据库来识别这些差异。而方言(dialect)就是用来区分hibernate对应哪种数据库
通常在使用Spring整合hibernate的时候,会有这样一段配置
《property name="hibernateProperties"》
《value》
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=none
hibernate.format_sql=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.release_mode=auto
hibernate.connection.isolation=1
hibernate.connection.autocommit=false
hibernate.cache.use_query_cache=false
hibernate.cache.use_second_level_cache=false
hibernate.jdbc.batch_size=25
hibernate.jdbc.fetch_size=50
《/value》
其中红色的配置语句就是指明使用mysql方言,对于其他不同的数据库都有对应不同的方言,详情点击这里。
首先创建一个mysql函数,我们命名为my_change_local(number bigint)
--这里是使用navicat工具创建的函数
BEGIN
DECLARE stemp varchar(255);
set stemp=’’;
select sms.LabelId into stemp from sysmain.message sms where sms.id=number;
RETURN stemp;
END
1.重写方言类,注册函数
public class MyLocalDialect extends MySQL5InnoDBDialect {
public MyLocalDialect() {
super();
registerFunction("my_change_local",new SQLFunctionTemplate(StandardBasicTypes.STRING,"my_change_local(?1)"));
}
}
2.修改配置文件,将数据库方言指向自己定义的方言类
将 hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 改为 hibernate.dialect=xxx.xxx.MyLocalDialect
3.之后就可以在hql中使用自己定义的函数了
在hibernate中org.hibernate.dialect.MySQL5Dialect和MysqlDialect应该用哪个呢
MysqlDialect是比较老的,如果你是用的mysql5,最好是用MySQL5Dialect。操作方法如下:
1、首先,以IDEA开发工具自动生成的main方法进行改造。添加session.load()方法运行,此时控制台没有sql输出,证明并没有去查询数据库。
2、使用返回对象,输出其中的属性值。此时控制台输出了sql,证明在使用返回对象的时候,Hibernate才会去查询数据库。
3、延迟加载的原理:在使用load方法时,Hibernate返回对象是CGLIB动态生成的类型,代理对象会重写get方法,其中加入判断是否加载。
4、由于在项目中dao只负责查询数据,使用数据是在JSP中解析出来,如果在dao中就把session关闭,那么jsp就无法解析数据,因此可以在视图层保持session的开启状态。
5、最后spring,在web.xml中需要加入过滤器配置。
使用hibernate5需要哪些 jar包
创建hibernate3需要导入的jar包如下:
1.hibernate3.jar:
2.cglib-full-2.0.2.jar
CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包
3.dom4j-1.4.jar
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。
4.odmg-3.0.jar

更多文章:
setint(PreparedStatement setString与setInt效果是否一样)
2026年7月20日 22:15
spring用英语怎么说(spring怎么读英语 spring英文解释)
2026年2月23日 15:30
property prices(spillover effect是什么意思)
2026年9月23日 18:00
update的过去式和过去分词(Update翻译成汉语是什么意思)
2025年8月29日 13:00
学生eclipse安装教程(哪位大神可以手把手教我怎么在eclipse中安装PHP啊,我是学生,刚刚开始学习,不会装呀..)
2026年7月2日 16:30
进制转换器代码(C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具)
2025年10月4日 05:30
idea写的代码eclipse能用吗(怎么把Intelij IDEA的工程变为Eclipse工程,希望有人解答)
2025年6月9日 15:00
易语言源代码及模块大全1500(求一个小工具的易语言源代码 悬赏100分)
2026年1月17日 23:15
mmap的实现原理(Android跨进程通信-mmap函数)
2026年5月3日 00:15













