SpringBoot解决JPA 中文排序乱序
- 需要自己定义一个类继承 MySQL8Dialect (自己使用的MySql 版本 使用Mysql 5版本的继承MySQL5Dialect)并注册到Spring容器中
@Component
public class MySQLChineseDialect extends MySQL8Dialect{
public MySQLChineseDialect(){
}
@Override
public String renderOrderByElement(String expression, String collation, String order, NullPrecedence nulls) {
expression = (new StringBuilder("convert(")).append(expression).append(" using 'gbk')").toString();
return super.renderOrderByElement(expression, collation, order, nulls);
}
}
2.在SpringBoot配置文件中激活该类
spring.jpa.properties.hibernate.dialect=com.xxx.xxx.config.MySQLChineseDialect
3.renderOrderByElement该方法为重写父类中的方法,长处是不用改其它数据方言包,不用改代码,缺点是全部的排序方法将都运行convert方法