9、mybatis学习——sqlmapper配置中#{}和${}的区别
一、#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。
二、使用#{}可以有效的防止SQL注入,提高系统安全性。
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
2. $将传入的数据直接显示生成在sql中。
3. #方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入。
5.$方式一般用于传入数据库对象,例如传入表名。
6. #{}方式一般用于传入字段值。
7.一般能用#的就别用$。
三、传值差别
#{id}其中的id表示接收输入的参数,参数名就是id,如果输入参数是简单类型,#{}中的参数名可以任意,参数类型为对象,则参数名需写对象的属性名
${}表示拼接sql串,将接收参数的内容不加任何修饰拼接到sql中,一般用于模糊查询${value}:接收输入参数的内容,如果传入类型是简单类型,${}中只能用 value,参数类型为对象,则参数名需写对象的属性名
例如:select * from user where userName like '%${value}%'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)