这篇文章主要介绍了mybatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在MyBatis 的映射配置文件中,动态传递参数有两种方式:#{
这篇文章主要介绍了mybatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
在MyBatis 的映射配置文件中,动态传递参数有两种方式:
#{} 占位符
${} 拼接符
区别1
#{} 为参数占位符 ?,即sql 预编译
${} 为字符串替换,即 sql 拼接
区别2、
#{}:动态解析 -> 预编译 -> 执行
${}:动态解析 -> 编译 -> 执行
区别 3、
#{} 的变量替换是在DBMS 中
${} 的变量替换是在 DBMS 外
区别 4、
变量替换后,#{} 对应的变量自动加上单引号''
变量替换后,${} 对应的变量不会加上单引号 ''
区别 5、
#{} 能防止sql 注入
${} 不能防止sql 注入
#{}:select * from t_user where uid=#{uid}${}:select * from t_user where uid= '${uid}'
#{}:select * from t_user where uid= ?${}:select * from t_user where uid= '1'
#{}:select * from t_user where uid= '1'${}:select * from t_user where uid= '1'
单个参数的情形
#{}
${}
多个参数的情形 #{}
${}
不论是单个参数,还是多个参数,一律都建议使用注解@Param("")
能用 #{} 的地方就用 #{},不用或少用${}
表名作参数时,必须用${}
。如:select * from ${tableName}
order by 时,必须用 ${}
。如:select * from t_user order by ${columnName}
表名处用#{}会直接报错;order by后面用#{}排序不生效
使用 ${} 时,要注意何时加或不加单引号,即${} 和 '${}'
。一般字段类型为char或者varchar时需要加单引号
感谢你能够认真阅读完这篇文章,希望小编分享的“MyBatis中的#{}和${}有什么区别”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!
--结束END--
本文标题: MyBatis中的#{}和${}有什么区别
本文链接: https://www.lsjlt.com/news/301420.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-13
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0