文档章节

Mybatis--动态设定 字段 order by 排序

l
 lnt123
发布于 2016/07/11 14:39
字数 279
阅读 46
收藏 0
点赞 0
评论 0

今天测试发现了个项目BUG,说是查询的列表没有排序。查看代码如下:

代码中已经对SQL进行了排序。再次运行代码,发现查询结果还是没有排序。于是查看打印日志:

将语句和参数放入工具navicate for mysql 发现没问题。

上网搜索发现,原来是mybatis问题,mybatis SQL文件中 #符号将传入的数据都当做一个字符串,会对数据增加一个引号,如 order by #{ userid } , userid对应的值是10001,解析后就是 order by '10001' 。

$符号将传入的数据直接显示在sql中。如 order by ${ userid } , userid对应的值是10001,解析后结果为 order by userid 。将 sql中的#改成$发现果然结果可以。

再次搜索发现 #可以最大程度防止sql注入,$则无法防止sql的注入,一般课可以传入数据库对象,比如表明或者字段名称。使用的时候需要注意。

决定还是改用pagebounds排序

© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 1
码字总数 279
作品 0
长沙
mybatis中的#和$的区别

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

动听的椰子 ⋅ 2016/04/06 ⋅ 0

Mybatis中的$和#的区别

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

程序猿之小菜鸟 ⋅ 2016/06/20 ⋅ 0

mybatis中的#{value}和${value}的区别

#{value}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。 ${value}将传入的数据直接显示生成在sql中。 #{value}方式能够很大程度防止sql注入。  4.${value}方式无法防止S...

北國丶江山 ⋅ 2016/09/05 ⋅ 1

mybatis动态添加排序条件参数设置

不能使用#{},因为会默认加上引号(ORDER BY '字段' 'DESC/ASC'),导致排序无效

Kylin_Shaw ⋅ 2016/02/26 ⋅ 0

Mybatis中#和$的区别

tips: 能用#的就别用$. Mybatis中进行参数传递,可以使用两种方式#{}或者${} 其中,#{ } 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符;一个 #{ } 被解析为一个参数占位符...

金琥 ⋅ 2017/11/05 ⋅ 0

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

字符串替换默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改...

beanGou ⋅ 2016/04/05 ⋅ 0

mybatis 显示参数${} #{},${}适用场景 miniui sortField sortOrder

最近配合miniui 排序,发现用${} 可以直接使用 sortField、sortOrder 里面的值进行排序,而用#{} 就不行了 查了下 这两个区别: 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个...

lzf05303774 ⋅ 2017/04/27 ⋅ 0

selfly/dexcoder-assistant

#Dexcoder快速开发辅助工具包 该通用dal是在开发过程中,对于简单封装的通用dao或数据访问层使用深感痛苦与不便,由此进行了整合和改进发展而来。 如果你不喜欢用、这类ORM框架,喜欢或,那么...

selfly ⋅ 2015/12/24 ⋅ 0

mybatis-plus 2.1.7 发布,代号:清风徐来

mybatis-plus 是一款 mybatis 动态 SQL 自动注入 mybatis 增删改查 CURD 操作中间件。让 mybatis 拥有 hibernate 的单表高效,也保留 xml sql 的灵动, 减少你的开发周期优化动态维护 xml 实...

青苗 ⋅ 2017/12/11 ⋅ 22

Mybatis $ 和#区别

一、where条件 # 将传入的参数都当成一个字符串,会对参数加单引号, $ 不会对参数加单引号,传入什么就是什么 例如: name=#{name} 传入的name=张三,则解析成的sql为name=’张三’ name=$...

LYQ1990 ⋅ 2016/05/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

BS与CS的联系与区别【简】

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/...

anlve ⋅ 40分钟前 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 59分钟前 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部