解决mybatis中order by排序无效问题
1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是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");
上一篇:在Idea2020.1中使用gitee2020.1.0创建第一个代码库的实现
栏 目:JAVA代码
下一篇:java实现AES可逆加密算法
本文地址:http://www.codeinn.net/misctech/77510.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




