文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mybatis如何实现的数据库排序

2024-04-02 19:55

关注

mybatis数据库排序

今天用到了对数据库按照倒序进行输出。因为刚接触mybatis,所以对这方面还不是太了解,再网上搜了好长时间终于找到了一些有用的信息。

我的目标是这样的,数据库中的信息分为无效和有效,对数据库中的信息的有效值按照倒序进行输出,输出到表格中,

在网上看到了这样的语句,SELECT * FROM photo ORDER BY id DESC;于是我就直接拿过来用了,但是却出现了问题,因为我的是有条件排序的,

尝试了几次后我发现是这样写的, select 

<include refid="Base_Column_List" />
from manager_user where is_valid = 1 

ORDER BY id DESC;这样的话输出的内容就达到了我的目标,将语句中的desc换成asc就可以进行升序排序

mybatis order by 排序

在使用MyBatis解析xml进行排序的时候,遇见排序无效的问题!

方式能够很大程度防止sql注入

order by 之后要使用$而非#

附解决代码段:

其中orderByField就是传入进行排序的参数值!

<choose>
  <when test="orderByField != null and orderByField !=''">
    <choose><when test="isAsc == true">
      order by ${orderByField} ASC
  </when>
  <otherwise>
    order by ${orderByField} DESC
  </otherwise></choose>
  </when>
<otherwise>
  order by id DESC

</otherwise></choose>

  ORDER BY
        <choose>
        <when test="sort!=null">
                #{sort,jdbcType=VARCHAR}
            <if test="order!=null">
                #{order,jdbcType=VARCHAR}
            </if>
        </when>
        <otherwise>
            id asc , create_time asc
        </otherwise>
     </choose>

原因是: #{order,jdbcType=VARCHAR},MyBatis会自动将排序字段当成一个字符串,等同于order by ‘create_time’ ‘desc’,可以通过执行,但无效,与order by create_time desc结果不同

解决方法: 使用order,Mybatis会将其视作直接变量,变量替换成功后,不会再加上引号成为字符串,同样排序顺序也一样

{order},因此

  ORDER BY
        <choose>
        <when test="sort!=null">
                ${sort}
            <if test="order!=null">
                ${order}
            </if>
        </when>
        <otherwise>
            id asc , create_time asc
        </otherwise>
     </choose>

#能很大程度的防止SQL注入 $无法防止Sql注入 $用于传入数据库对象 <![CDATA[]]>,在该符号内的语句,不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。

在mapper文件中写sql语句时,遇到特殊字符时,如:< > 等,建议使用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯