`
zyn010101
  • 浏览: 320537 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为hibernate添加数据库方言函数

 
阅读更多
在sessionFactory中配置hibernate.dialect属性,以mysql为例,class设置为自定义的类,
<bean id="chartSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="chartDataSource" />
		<property name="mappingLocations">
			<list>
	            <value>classpath*:com/landray/kmss/hrt/chart/model/*.hbm.xml</value>
				<value>classpath:com/landray/kmss/component/dbop/model/CompDbcp.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigPersonalInfo.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigTrainServer.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigTrainMain.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigTechnology.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigPolitics.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigFunction.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigEducation.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/config/model/HrtConfigNation.hbm.xml</value>
				<value>classpath:com/landray/kmss/sys/organization/model/SysOrgPost.hbm.xml</value>
				<value>classpath:com/landray/kmss/sys/organization/model/SysOrgGroupCate.hbm.xml</value>
				<value>classpath:com/landray/kmss/sys/organization/model/SysOrgGroup.hbm.xml</value>
				<value>classpath:com/landray/kmss/sys/organization/model/SysOrgElement.hbm.xml</value>
				<value>classpath:com/landray/kmss/sys/organization/model/SysOrgPerson.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/course/scorm/model/HrtStudyCourse.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/course/scorm/model/HrtStudyCourseType.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/course/scorm/model/HrtCourseProperties.hbm.xml</value>
				<value>classpath:com/landray/kmss/hrt/course/scorm/model/HrtStudyStudentCourse.hbm.xml</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">com.landray.kmss.util.MySQLLocalDialect</prop>
				<prop key="hibernate.show_sql">${chartDB.hibernate.show_sql}</prop>
				<prop key="hibernate.format_sql">${chartDB.hibernate.format_sql}</prop>
				<prop key="hibernate.jdbc.fetch_size">${chartDB.hibernate.jdbc.fetch_size}</prop>
				<prop key="hibernate.jdbc.batch_size">${chartDB.hibernate.jdbc.batch_size}</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
			</props>
		</property>
		<property name="lobHandler" ref="defaultLobHandler2"></property>
	</bean>

package com.landray.kmss.util;


import org.hibernate.dialect.function.SQLFunctionTemplate;

/**
 * @author Zhangyanan
 *	使mysql支持汉字排序
 */
public class MySQLLocalDialect extends org.hibernate.dialect.MySQL5Dialect {
	
	public MySQLLocalDialect(){ 
		super(); 
		registerFunction("convert", new SQLFunctionTemplate(org.hibernate.Hibernate.STRING, "convert(?1 using ?2)") );
		registerFunction("convert_gbk", new SQLFunctionTemplate(org.hibernate.Hibernate.STRING, "convert(?1 using gbk)") ); 
	} 

}

在hql中就可以使用 select u from User order by convert(personName,gbk)或者 select u from User order by convert_gbk(userName) 来实现按汉字拼音顺序排序了
1
2
分享到:
评论
3 楼 javatozhang 2013-06-29  
zyn010101 写道
javatozhang 写道
能说说使用hibernate数据库方言的原理吗?

,这两天我忙完了去扒下源码把原理也贴上来

期待lz的持续更新,希望与lz交流学习!
2 楼 zyn010101 2013-06-29  
javatozhang 写道
能说说使用hibernate数据库方言的原理吗?

,这两天我忙完了去扒下源码把原理也贴上来
1 楼 javatozhang 2013-06-28  
能说说使用hibernate数据库方言的原理吗?

相关推荐

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate+中文文档

    3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of inheritance mappings) 16.1. 别名注射(alias injection names) 19.1. ...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    HibernateAPI中文版.chm

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate中文详细学习文档

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. ...

    支持多数据库的ORM框架ef-orm.zip

    但是这些SQL语句并不是直接传送给JDBC驱动的,而是 有着一个数据库方言层,经过方言层处理的SQL语句,就具备了在当前数据库上正确操作的能力。这相当于提供了一种能跨数据库操作的SQL语言。(E-SQL) E-SQL不但解决了...

    hibernate 教程

    SQL Dialects SQL 方言 3.5.2. 外连接抓取(Outer Join Fetching ) 3.5.3. 二进制流 3.5.4. 自定义CacheProvider 3.5.5. 事务策略配置 3.5.6. 绑定SessionFactory到JNDI 3.5.7. 查询语言替换 ...

    Hibernate 中文 html 帮助文档

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/...

    最全Hibernate 参考文档

    4.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 4.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非final...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    Hibernate教程

    5.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供一个标识属性(identifier property)(可选) 5.1.4. 使用非...

    hibernate

    SQL Dialects SQL 方言 3.5.2. 外连接抓取(Outer Join Fetching ) 3.5.3. 二进制流 3.5.4. 自定义CacheProvider 3.5.5. 事务策略配置 3.5.6. 绑定SessionFactory到JNDI 3.5.7. 查询语言替换 ...

    hibernate3.04中文文档.chm

    5.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供一个标识属性(identifier property)(可选) 5.1.4. 使用非...

    Hibernate3+中文参考文档

    4.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 4.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非final...

    Hibernate参考文档

    4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/...

    hibernate 框架详解

    为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供一个标识属性(identifier property)(可选) 5.1.4. 使用非final的类...

    sqltoy-orm框架系统-其他

    5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-orm特点: 1、最优雅直观的sql编写模式 2、天然防止sql注入,执行过程 3、最强大的分页查询 4、最巧妙的缓存应用,将多表...

    NHibernate参考文档 2.0.0 chm

    4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非不可继承的(non-sealed)类以及虚方法(virtual methods...

    NHibernate中文帮组文档(2008.11月更新)

    4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非不可继承的(non-sealed)类以及虚方法(virtual methods...

Global site tag (gtag.js) - Google Analytics