总结: # 你传入的变量类型会被保留 $ 本质就是拼接 不会考虑拼串的
$ 情况下 参数是整数 跟参数是字符串
字符串情况: 缺少’’ 相当于字符串拼接
”select * from t_user where username =“ + “张三” = ”select * from t_user where username =张三"
” select * from t_user where username = '${username} ’ “ = ” select * from t_user where username = ’ ” + “张三 ”+ “ ’ ”
” select * from t_user where username = ’ “张三 ’ ”
正确写法
整数情况
”select * from t_user where id=“ + 3 = ”select * from t_user where id= 3"
如果想修正
# 情况下 参数是整数 跟参数是字符串
字符串情况 占位符 然后你是什么就传入什么 带着符号
整数情况 没有符号传入的也没有
批量删除 为什么要用$ 原因是 会自动去掉双引号
我们传入的参数 “1,2,3”
如果用传什么就是什么 那么sql语句就是
所以得用$ 因为 ‘张三’ 会变张三
模糊查询为什么要用$
因为#传入什么就是什么 参数是”张三“
select * from t_user where username like ‘%#{username}%’
预编译之后变成这样 失去了占位符
select * from t_user where username like ‘%?%’
所以要改为
select * from t_user where username like “%”#{username}“%”
这样就会变成
select * from t_user where username like “%” ?“%”
然后"张三"放进去 双引号抵消
select * from t_user where username like “% 张三%”
完美
如果是$
select * from t_user where username like ‘%${username}%’
那么直接就是
select * from t_user where username like ‘%张三%’