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 )