解决mybatis中order by排序无效问题

网友投稿 1497 2023-03-05

解决mybatis中order by排序无效问题

解决mybatis中order by排序无效问题

1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_iduWzvqm},如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id"。

2、$将传入的数据直接显示生成在sql中。如:order by ${user_id},如果传入的值是111,那么解析成sql时的值为order by 111, 如果传入的值是id,则解析成的sql为order by id。

3、#方式能够很大程度防止sql注入。

4、$方式无法防止Sql注入。

5、$方式一般用于传入数据库对象,例如传入表名。

6、一般能用#的就别用$。

ps: 在使用mybatis中还遇到<![CDATA[]]>的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。

所以order by 之后要使用$而非#。

补充知识:MyBatis-plus数据库字段排序不准确

目录标题

1:今天用mybatis-plus进行开发的时候遇到一个问题,就是用mysql自带的排序进行数据排序的时候,发现排序的数据不准确。

1:今天用mybatis-plus进行开发的时候遇到一个问题,就是用mysql自带的排序进行数据排序的时候,发现排序的数据不准确。

例如:12还没有8,4,2大,这就很郁闷了。

后来在网上查了一下,原来是自己给自己挖的坑,数据库排序字段用的是varcher类型,而排序函数针对的是number类型。

解决方案:

对于mysql和oracle都实用

order by 字段+0

order by 字段*1

因为用的是mybatis-plus,不想写sql怎么办呢?那就用自带的排序函数喽。排序字段直接"+1"就Ok了

//倒叙

queryWrapper.orderByDesc("visit_num+1");

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一键生成小程序插件(一键生成小程序插件下载)
下一篇:微信电脑无法打开小程序(电脑上微信无法打开小程序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~