- #{}是占位符,预编译处理;${}是拼接符,字符串替换,没有预编译处理。
- Mybatis在处理#{}时,#{}传入参数是以字符串传入,会将SQL中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
- Mybatis在处理时 , 是 原 值 传 入 , 就 是 把 {}时,是原值传入,就是把时,是原值传入,就是把{}替换成变量的值,相当于JDBC中的Statement编译
- 变量替换后,#{} 对应的变量自动加上单引号 '';变量替换后,${} 对应的变量不会加上单引号 ''
- #{} 可以有效的防止SQL注入,提高系统安全性;${} 不能防止SQL 注入
- #{} 的变量替换是在DBMS 中;${} 的变量替换是在 DBMS 外
#{}和${}的区别?
.L.JIN.Jie2024-01-10 6:10
相关推荐
HeyZoeHey11 小时前
Mybatis执行sql流程(一)青川入梦14 小时前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战33255_40857_2805915 小时前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)勿在浮沙筑高台19 小时前
无法获取实体类com.example.springdemo2.entity.po.UserPO对应的表名!柯南二号2 天前
【Java后端】MyBatis-Plus 原理解析Easocen2 天前
Mybatis学习笔记(五)qq_三哥啊2 天前
【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)柯南二号2 天前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略记忆不曾留2 天前
Mybatis 源码解读-SqlSession 会话源码和Executor SQL操作执行器源码昵称为空C4 天前
SpringBoot 实现DataSource接口实现多租户数据源切换方案