当前位置: 首页 > news >正文

Mybatis ORDER BY 排序失效 ORDER BY 与 CASE WHEN THEN 排序问题

一、ORDER BY 排序失效

如果传递给 mapper 的参数值是以 #{test_参数} 的形式,那么就会报错

具体如下:

传递参数是 name 排序规则是升序 asc

package com.ruoyi.web.mapper;
public interface TestMapper {List<TestEntity> getTestData( @Param("testcolumn") String testColumn, @Param("rule") String rule);
}
<mapper namespace="com.test.mapper.TestMapper"><select id="getTestData" resultType="com.test.entity.TestEntity">SELECT * FROM test_table ORDER BY #{testcolumn} #{rule}</select>
</mapper>

ORDER BY 后 使用 #{ } 获取参数值,运行后,会报错的,必须改成 ${ },井号改成 美元符号。

如下所示:

<mapper namespace="com.test.mapper.TestMapper"><select id="getTestData" resultType="com.test.entity.TestEntity">SELECT * FROM test_table ORDER BY ${testcolumn} ${rule}</select>
</mapper>

二、ORDER BY 与 CASE WHEN THEN 排序问题

数据库表 test_table 的真实字段名: test_id

测试参数值:

testcolumn 参数赋予内容是 testId

rule 排序规则是升序 asc

package com.ruoyi.web.mapper;
public interface TestMapper {List<TestEntity> getTestData( @Param("testcolumn") String testColumn, @Param("rule") String rule);
}
<mapper namespace="com.test.mapper.TestMapper"><select id="getTestData" resultType="com.test.entity.TestEntity">SELECT * FROM test_table ORDER BY CASE WHEN "${testcolumn}" = 'testId' THEN test_idEND   ${rule}</select>
</mapper>

注意:

${ } 一定要被双引号包含,否则不会进行一个字符串匹配,即和 'testId' 进行对比,会报错的,然后返回值的就不需要加双引号或单引号了, 直接就是数据库表 test_table 的字段名


参考链接

1. Mybatis实现 动态排序

2. MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

3. Mybatis Order By动态参数详解

4. mybatis中orderBy(排序字段)和sort(排序方式)引起的bug

5. Mybatis动态字段排序防注入-简单粗暴上代码的方式

6. Mybatis自定义排序详解CASE WHEN

7. Mybatis CASE WHEN 的用法

8. Mybatis中case when 配合 trim的使用方法

9. MYBATIS中CASE WHEN的使用

10. Mybatis CASE WHEN 的用法

11. mysql 某列指定值靠前排序:order by 高级用法之case when

12. MyBatis 排序时使用 order by 动态参数

http://www.lryc.cn/news/131829.html

相关文章:

  • 日常BUG——微信小程序提交代码报错
  • 1048:有一门课不及格的学生
  • 数据结构——B-树、B+树、B*树
  • 2023国赛数学建模思路 - 案例:FPTree-频繁模式树算法
  • GPT系列总结
  • 【福建事业单位-综合基础知识】05民法典
  • 微服务篇
  • C++ 的关键字(保留字)完整介绍
  • C#小轮子:MiniExcel,快速操作Excel
  • Ribbon负载均衡
  • LeetCode--HOT100题(33)
  • 【docker练习】
  • 韦东山-电子量产工具项目:业务系统
  • React(6)
  • RabbitMq-2安装与配置
  • 论文笔记:Continuous Trajectory Generation Based on Two-Stage GAN
  • redis实战-缓存数据解决缓存与数据库数据一致性
  • 【排序】选择排序
  • 深入浅出Pytorch函数——torch.nn.init.trunc_normal_
  • 探索高级UI、源码解析与性能优化,了解开源框架及Flutter,助力Java和Kotlin筑基,揭秘NDK的魅力!
  • 国外服务器怎么有效降低延迟
  • AI百度文心一言大语言模型接入使用(中国版ChatGPT)
  • vue 安装并配置vuex
  • 有一种新型病毒在 3Ds Max 环境中传播,如何避免?
  • 基于Java/springboot铁路物流数据平台的设计与实现
  • 比较杂的html元素
  • Docker基本管理
  • .NET Core6.0使用NPOI导入导出Excel
  • 用API接口获取数据的好处有哪些,电商小白看过来!
  • 使用struct解析通达信本地Lday日线数据