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

这篇具有很好参考价值的文章主要介绍了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_id
        END   ${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 动态参数文章来源地址https://www.toymoban.com/news/detail-667466.html

到了这里,关于Mybatis ORDER BY 排序失效 & ORDER BY 与 CASE WHEN THEN 排序问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hive SQL: case when + group by 的用法

    假设有一个数据表,包含了不同人员的信息,其中包括姓名、性别、年龄等字段。现在需要统计不同年龄区间的人数,并按照年龄区间进行分组。可以使用如下 SQL 语句实现: ``` SELECT    CASE      WHEN age BETWEEN 0 AND 10 THEN \\\'0-10\\\'      WHEN age BETWEEN 11 AND 20 THEN \\\'11-20\\\'      WHEN a

    2024年02月08日
    浏览(34)
  • 【MySQL】union (all) 后 order by 子查询排序不生效问题解决方案

    2308. 按性别排列表格 表:Genders Column Name Type user_id int gender varchar user_id 是该表的主键(具有唯一值的列)。 gender 的值是 ‘female’,‘male’,‘other’ 之一。 该表中的每一行都包含用户的 ID 及其性别。 表格中 ‘female’,‘male’,‘other’ 数量相等。 编写一个解决方案以重新

    2024年01月17日
    浏览(19)
  • Mybatis 常用条件语句,大于小于、if、for、模糊搜索、case when、choose

    目录 大于小于 if 条件判断  for循环 LIKE 模糊搜索 case when choose选择语句 前言-与正文无关         生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世

    2024年02月01日
    浏览(35)
  • mysql GROUP BY 怎么 order by 排序

    在 MySQL 中使用 GROUP BY 子句时,如果需要对结果进行排序,可以使用 ORDER BY 子句来对分组后的结果进行排序。 ORDER BY 子句应该放在 GROUP BY 子句之后,使用逗号来分隔需要排序的列,并在排序列后指定排序顺序。例如: 在这个例子中,SELECT 语句选择了表 table1 中的列 column1 和

    2024年02月16日
    浏览(20)
  • 【mysql学习篇】Order by与Group by优化以及排序算法详解

    Case1: 分析: 利用 最左前缀 法则:中间字段不能断,因此查询用到了name索引,从key_len=74也能看出,age索引列用在排序过程中,因为Extra字段里没有using filesort 注意: order by age 虽然用到了索引,但是不会在key_len列体现 Case 2: 分析: 从explain的执行结果来看:key_len=74,查询

    2024年02月15日
    浏览(17)
  • MySQL使用SELECT 语句不加ORDER BY默认是如何排序的?

    大家好,我是阿飞云 怕什么真理无穷,进一步有近一步的欢喜 记录一个 MySQL 查询排序的问题,一个SQL语句没有加 order by ,那么查询出来的结果到底是按照什么规则排序的呢?查询了网上的一些资料,分享如下: •MyISAM 表 MySQL Select 默认排序是按照物理存储顺序显示的(不

    2024年02月10日
    浏览(16)
  • MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录

    使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 默认按升序排序。要按降序排序结果,使用 DESC 。 示例按名称按字母顺序排序结果: ORDER BY DESC 使用 DESC 以降序排序结果。 示例按名称以字母逆序排序结果: 您可以使用\\\"DELETE FROM\\\"语句从现有表格中

    2024年02月05日
    浏览(26)
  • 玩转Mysql系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑

    这是Mysql系列第7篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 本章内容 详解排序查询 详解limit limit存在的坑 分页查询中的坑 排序查询(order by) 电商中:我们想查看今天所有成交的订单,按照交易额从高到低排序,此

    2024年02月11日
    浏览(18)
  • mysql order by 索引问题综合分析

    一,文章1 Mysql-索引失效 order by优化_orderby索引失效_zyk1.的博客-CSDN博客 总结: 0,索引 与 查询条件 与 排序字段关系,Using filesort出现场景 1.联合索引,最左匹配原则,不仅查询条件需要遵循,排序也需要遵循,查询+排序组合也要遵循 2.extra 避免出现filesort,使用index排序

    2024年02月07日
    浏览(16)
  • 【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

    正如上图所示,采用when打桩了,但是,实际执行的时候还是返回null。 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常,所以在测试类中需要加入以下代码片段:

    2024年02月02日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包