首页 > 其他分享 >mybatis plus order by 不支持convert函数

mybatis plus order by 不支持convert函数

时间:2023-11-22 16:22:42浏览次数:36  
标签:convert 函数 jsqlparse plus mybatis 排序

最近业务上有个需求,要按照企业名称中文进行排序显示。项目使用的是mybatisplus + mysql

从网上看到的排序解决方法是使用mysql 的 convert函数:

select * from 客户表 where *** order by convert(`企业名称` using GBK);

为什么要使用convert函数那?因为一般使用的数据编码是utf-8,mysql中utf-8的默认排序规则是utf8_general_ci ,它的排序顺序并不是按照拼音来排序的。

这样就需要吧utf-8的字符转译成gbk编码,就是convert函数的作用

但是!!!

mybatis plus 中如果使用了上述的convert函数来惊醒排序的话,运行时会报错:

这个详见 mybatis-plus issue :https://gitee.com/baomidou/mybatis-plus/issues/I449PW 

问题原因:

mybatis是使用 jsqlparse库来进行解析sql的,这个问题就出在jsqlparse库上

详见:jsqlparse issue : https://github.com/JSQLParser/JSqlParser/issues/1767

所以,这个问题暂时未无解的。

jsqlparse 5.0 解决了这个问题,不知道mybatis什么时候会升级jsqlparse库版本

详见:https://github.com/JSQLParser/JSqlParser/pull/1778

 

现阶段解决方法:

使用 cast(xxx as char character set gbk) 函数即可

 

标签:convert,函数,jsqlparse,plus,mybatis,排序
From: https://www.cnblogs.com/qufanblog/p/17849572.html

相关文章

  • Maybatis-Plus 数据库查询 lambdaQuery和mapper中EQ、NE、GT、LT、GE、LE、select、li
    Maybatis-PluslambdaQuery和mapper中EQ、NE、GT、LT、GE、LE的用法及详解实体当前实体如下,后续代码示例都用该实体;@Data@TableName("user_info")@ApiModel(value="UserInfo对象",description="")publicclassUserInfoimplementsSerializable{privatesta......
  • 1.MyBatisPlus代码生成器使用
    在项目开发中,快速生成entity、mapper、service、controller包中的简单接口和类能够加速我们开发的速度时间。为此,我们可以使用MyBatis-Plus的代码生成器快速生成前面几个包的接口和代码。快速生成代码的流程依次是:引入依赖、配置文件、编写生成类并启动。1.引入依赖 为......
  • MyBatisPlus 注解方式实现多表关联查询
    Mapper写法:@Select("SELECT*FROMtableAaLEFTJOINtableBbona.key=b.key${ew.customSqlSegment}")Listmethod1(@Param(Constants.WRAPPER)QueryWrapperwrapper);IPagemethod2(Page<>page,@Param(Constants.WRAPPER)QueryWrapperwrapper......
  • mybatisplus实现一次多表联查+分页查询
    以书籍整理为例,书籍是一个单独的表,书籍类别是另一个表,通过书籍通过类别的ID可以查询到书籍类别的具体名称,下面分享一下代码://mapperIPage<BookInfo>selectBookPage(IPage<BookInfo>page,@Param(Constants.WRAPPER)QueryWrapper<BookInfo>wrapper); //servicepublic......
  • 解放VSCode+Vue的完整组件库智能提示(包括ant-design-vue、element-plus等)
    解放VSCode+Vue的完整组件库智能提示最近因为一些原因从WebStrom转回VSCode,首先感受到的就是组件库没有智能提示了:这能忍吗?根本不可能!接下来,我带你花三分钟找回遗失的智能提示~首先,本篇文章适用于通过unplugin-vue-components自动引入组件的项目;也就是说,在你的vite.config.js......
  • Mybatis-Plus集成Sharding-JDBC与Flyway实现多租户分库分表
    背景公司产品部收到了一些重要客户的需求,他们希望能够依赖独立的数据库存储来支持他们的业务数据。与此同时,仍有许多中小客户,可以继续使用公共库以满足其需求。技术实现方面,此前持久层框架使用的Mybatis-plus,部分业务场景使用到了Sharding-JDBC用于分表,另外,我们的数据库版本控制工......
  • Mybatis-Plus集成Sharding-JDBC与Flyway实现多租户分库分表
    背景公司产品部收到了一些重要客户的需求,他们希望能够依赖独立的数据库存储来支持他们的业务数据。与此同时,仍有许多中小客户,可以继续使用公共库以满足其需求。技术实现方面,此前持久层框架使用的Mybatis-plus,部分业务场景使用到了Sharding-JDBC用于分表,另外,我们的数据库版本控制......
  • Spring5学习随笔-整合MyBatis(持久层)、连接池、Mapper文件
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】Spring持久层整合第一章、持久层整合1.Spring框架为什么要与持久层技术进行整合JavaEE开发需要持久层进行数据库的访问操作。JDBCMyBatis、Hibe......
  • 通过PowerShellPlus示例脚本学习PowerShell-通过WIndows集成验证登录SQLServer
    ##=====================================================================##Title:Connect-MSSQL-IPWindowsAuth##Description:ConnecttoSQLServerusingIPaddress,instanceand##Windowsauthentication##Author:Idera......
  • 国内站点同样使用API接口 与官网输出没有区别无须开通PLUS
       国内镜像是一个基于API接口的应用,它能够模拟人类的对话和语言交流,帮助用户更好地理解和应用自然语言处理技术。为了提高效率和稳定性,以及更好地服务用户,一些开发者在国内搭建了镜像站点,提供了更快速、可靠的服务。   国内镜像的优点在于能够在本地直接运行,避免了......