mybatis order by作为参数传入失效
mxl中的语句如下
<select id="statToday" resultType="com.dahua.la.business.model.vo.StatSysResultVO">
select a,
b,
count(1) as total
from table
where a is not null
and b is not null
and operateTime >= #{startTime,jdbcType=TIMESTAMP}
and operateTime <= #{endTime,jdbcType=TIMESTAMP}
group by a, b
order by
<foreach collection="orderItems" item="item" separator=",">
#{item.orderBy} #{item.order}
</foreach>
</select>
运行时通过日志打印出sql日志如下
select a, b, count(1) as total
from table
where a is not null and b is not null
and operateTime >= ? and operateTime <= ?
group by a, b
order by ? ?
把参数补充上拿到Navicat执行的时候,完全没有问题,排序也正常。
但是在代码里执行就是不行, 最后的排序完全没有生效。
实际上,我补上参数的时候漏了引号,因为#{item.orderBy}会对传入的数据加一个引号,如果带着引号去Navicat执行,也是排序不生效的。
问题原因找到了
直接替换成使用${item.orderBy}形式,单纯的字符串替换不加引号。
<foreach collection="orderItems" item="item" separator=",">
${item.orderBy} ${item.order}
</foreach>
此时程序正常。
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。
这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。
比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
重要:
接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。
这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关推荐:
ChatGPT内部HTTP接口文档-为开发者提供高效便捷的AI服务接入方式,安屿ai
为什么seo这么难,seo难嘛 ,ai宁中则
SEO站在未来之巅,助力网站在激烈竞争中脱颖而出,推荐网站优化欢迎咨询
ChatGPT无法使用?了解原因及解决方法,轻松恢复智能对话体验!,ai满版图案
SEO抢权:如何在竞争激烈的市场中占得先机,正规网站建设口碑好
文章创作AI:引领智能写作的新时代
SEO优化快:如何在短时间内实现网站流量爆发,Lacey0508ai
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译
代哥SEO-让您的网站迅速登顶搜索引擎的秘密武器,济南关键词的排名优化
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
高效创作之路:文章AI生成器的力量
怎么用AI润色文章,让你的文稿瞬间高大上
用AI修改文章,提升写作效率与质量的新时代
seo需要学习什么语言,做seo需要懂什么技术 ,ai软件制作教程
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
seO经理是什么岗位,seo经理招聘 ,ai写作重复被查
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
文章疑似AI生成怎么办?如何辨别并应对AI生成文章的挑战
ChatGPT无法访问原因分析及解决方案,斑马ai报道
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
SEO永远,数字营销的核心力量,广州seo搜索栏内容
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
优化工具:提升工作效率的秘密武器,网站模板的优化策略是什么
SEO更好,让你的网站从此脱颖而出,渝中的知名网站建设
打造内容创作新时代:有言AI生成助力创作者释放灵感
《“查看更多”背后的秘密:让你的人生更加丰富多彩!》,宁安公司网站建设
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
ChatGPT安装包Windows版-让智能助手触手可得,q和ai
ChatGPT打开后空白:如何解决这个困扰并高效使用AI助手,ai四声怎么写
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
怎么用AI写文:让创作更轻松,效率翻倍
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决常见问题!,ai招生广告设计
ChatGPT-01:开创人工智能新纪元,AI如何画模糊的云层
如何通过AI写文章,轻松提高写作效率与质量
专业SEO助力企业在激烈市场竞争中脱颖而出,嘉兴海外网站推广价格
ChatGPT网页版内容显示不全的解决方案:如何轻松解决问题?,课件ai
seo网站自学看什么书,seo技术适合自学吗 ,斑马ai阅读
SEO选择:如何挑选最合适的SEO优化策略?,wb免费刷粉网站推广
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
SEO注意事项:助力网站流量提升的关键策略,济宁快速seo优化价格
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
SEO网:让你的数字营销更加精准高效,开启网络引流新时代,丰县互联网网站推广优势
AI提炼主要内容:如何让信息更精准、高效、易懂,女军人ai
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK
ChatGPT页面不自动显示最新消息:如何解决这一困扰,提升使用体验?,斑马ai幼儿百度云网盘
SEO就是:让你的品牌脱颖而出,获得更多曝光与流量,梅岭关键词排名优化
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
SEO技巧提升网站流量:打造高效网站的关键策略,Ai测脸相