springcloud下hibernate本地化方言配置

springcloud下hibernate本地化方言配置,通過application.yml進行配置,通過自定義一個方言類配置到application.yml中,以mysql中convert爲例,convert能夠將漢字以首字符方式進行排序

ORDER BY convert(a.userName using 'gbk') DESC

如果是ssh看這裏https://blog.csdn.net/myfmyfmyfmyf/article/details/45503919

1、創建一個方言類,繼承org.hibernate.dialect.MySQL5Dialect

在com.muyunfei.hibernateDialect包下創建一個LocalMysqlDialect .java類,編寫無參構造,繼承父類的構造super(),增加registerFunction註冊一個函數

package com.muyunfei.hibernateDialect;

import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.type.StringType;

public class LocalMysqlDialect extends org.hibernate.dialect.MySQL5Dialect {

	public LocalMysqlDialect(){ 
	    super(); 
	    registerFunction("convert", new SQLFunctionTemplate(StringType.INSTANCE, "convert(?1 using ?2)")); 
	  }
	
}

 

2、更改配置文件

將自定義的方言類,配置到spring.jpa.properties.hibernate.dialect下

spring:
  jpa: 
    show-sql: false
    properties:
      hibernate:
        jdbc:
          batch_size: 100
        order_inserts: true
        order_updates: true
        dialect: com.muyunfei.hibernateDialect.LocalMysqlDialect

3、使用

將convert作爲正常函數使用即可

hql.append(" ORDER BY  convert(a.userName , gbk )  DESC ");

注意:convert函數有點特殊,在方言裏我們需要定義"convert(?1 using ?2)"),但是使用時需要convert(a.userName , gbk )

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章