博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【web开发】spring+hibernate4支持中文排序
阅读量:5909 次
发布时间:2019-06-19

本文共 862 字,大约阅读时间需要 2 分钟。

mysql在utf8编码格式下的中文排序会出现问题,因为现在用的是hql查询,不支持原生sql函数convert。有效的一种解决方法如下:

(1)新建一个类,派生自MySQL5Dialect

 

public class MyISAMDialect extends MySQL5Dialect {	   public MyISAMDialect(){	super();	registerFunction("convert_mine", new SQLFunctionTemplate(StandardBasicTypes.STRING, "convert(?1 using gbk)"));   }    @Override    public String getTableTypeString() {        return "engine=MyISAM";    }}

其中需要注意的是,在hibernate4版本中,使用StandardBasicTypes.STRING(来自包org.hibernate.type.StandardBasicTypes;)而不是Hibernate.STRING.

 

(2)在配置文件中引用或改为此类:

 

//... // ...
com.miniwork.mymanager.util.MyISAMDialect
//...
//...

原来的hibernate.dialect可能是设置为org.hibernate.dialect.MySQLDialect,即自定义类MyISAMDialect的超类。
(3)在使用hql查询语句时,在可能出现中文的列中例如name,可以这样使用:

 

 

from xxx order by convert_mine(name);

至此便可以完成中文的正确排序。

 

 

转载地址:http://xcvpx.baihongyu.com/

你可能感兴趣的文章
python开发部署时新增数据库中表的方法
查看>>
JS实现动画方向切换效果(包括:撞墙反弹,暂停继续左右运动等)
查看>>
VScode运行
查看>>
从零开始学架构二 架构设计流程
查看>>
判断一棵二叉树是否为二叉搜索树
查看>>
OC 创建单例
查看>>
iOS 线程操作库 PromiseKit
查看>>
省赛第一次选拔赛
查看>>
php中的魔术方法
查看>>
yum命令详解
查看>>
Linux修改时区以及同步时间
查看>>
小谈Java中的静态块与非静态块
查看>>
angularjs单击取值
查看>>
实验一
查看>>
虚拟环境和pip相关的命令
查看>>
接口的委托实现(通过接口)
查看>>
用MyEclipse 2013 Blue 图解5分钟搞定Spring的Bean和DataSource配置
查看>>
数据结构排序算法之堆排序
查看>>
Python之NumPy实践之数组和矢量计算
查看>>
Android多线程研究(9)——线程锁Lock
查看>>