Mybatis的mapper.xml中$和#的区别?

一脸懵逼ing 2017-10-26 11:00:12
#使用↓
and t.`requestControllerMethod` like
CONCAT('%',#{queryEntity},'%')
$使用↓
and t.`requestControllerMethod
like '%${title}%'

还有'
concat不是多个字符串拼接吗? 这里的CONCAT('%',#{queryEntity},'%') 为什么把'%'也分开了?
还有
concat能配合$又该怎么使用的呢?

...全文
713 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一脸懵逼ing 2017-10-26
  • 打赏
  • 举报
回复
引用 1 楼 a61595579 的回复:
如果你有在控制台打印sql你就能看出来一个大概的区别,$是直接拼接进去的,#是类似占位符,打个比方传入id = 1 $在控制台会直接显示 id = 1,而#会显示id = ? 然后在下面会有参数1 最主要的用处是#可以有效防止SQL注入而$不行
也就是${100} 打印的是100 ,${name} 打印的是name吗? 但是这样的话 为什么还要这样写like '%${title}%',而不是like '%title%' 呢? 是不是$和#都是取值? 而$是直接取值,而#也是取值,但是可以防止sql注入?
lifewell1 2017-10-26
  • 打赏
  • 举报
回复
最主要的用处是#可以有效防止SQL注入 效果和jdbc 的 id=?相同 而$单纯的字符串带入
自由的程序猿 2017-10-26
  • 打赏
  • 举报
回复
如果你有在控制台打印sql你就能看出来一个大概的区别,$是直接拼接进去的,#是类似占位符,打个比方传入id = 1 $在控制台会直接显示 id = 1,而#会显示id = ? 然后在下面会有参数1 最主要的用处是#可以有效防止SQL注入而$不行
自由的程序猿 2017-10-26
  • 打赏
  • 举报
回复
引用 3 楼 qq_38779405 的回复:
[quote=引用 1 楼 a61595579 的回复:] 如果你有在控制台打印sql你就能看出来一个大概的区别,$是直接拼接进去的,#是类似占位符,打个比方传入id = 1 $在控制台会直接显示 id = 1,而#会显示id = ? 然后在下面会有参数1 最主要的用处是#可以有效防止SQL注入而$不行
也就是${100} 打印的是100 ,${name} 打印的是name吗? 但是这样的话 为什么还要这样写like '%${title}%',而不是like '%title%' 呢? 是不是$和#都是取值? 而$是直接取值,而#也是取值,但是可以防止sql注入? [/quote] 都是取值,${id} 输出的是id的值,而不是id,你如果有打印sql在控制台的话这个是很明显的区别

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧