MyBatis中的#{}和${}有什么区别
发表于:2025-02-11 作者:千家信息网编辑
千家信息网最后更新 2025年02月11日,这篇文章主要介绍了MyBatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言在MyBatis 的映射
千家信息网最后更新 2025年02月11日MyBatis中的#{}和${}有什么区别
这篇文章主要介绍了MyBatis中的#{}和${}有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
前言
在MyBatis 的映射配置文件中,动态传递参数有两种方式:
1、#{} 占位符
2、${} 拼接符
#{} 和 ${} 的区别
区别1
#{} 为参数占位符 ?,即sql 预编译
${} 为字符串替换,即 sql 拼接
区别2、
#{}:动态解析 -> 预编译 -> 执行
${}:动态解析 -> 编译 -> 执行
区别 3、
#{} 的变量替换是在DBMS 中
${} 的变量替换是在 DBMS 外
区别 4、
变量替换后,#{} 对应的变量自动加上单引号''
变量替换后,${} 对应的变量不会加上单引号 ''
区别 5、
#{} 能防止sql 注入
${} 不能防止sql 注入
#{} 和 ${} 的实例:假设传入参数为 1
实例步骤一
#{}: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'
#{} 和 ${} 的大括号中的值
单个参数的情形
#{}
${}
多个参数的情形 #{}
${}
#{} 和 ${} 在使用中的技巧和建议
1、不论是单个参数,还是多个参数,一律都建议使用注解@Param("")
2、 能用 #{} 的地方就用 #{},不用或少用${}
3、表名作参数时,必须用${}
。如:select * from ${tableName}
4、order by 时,必须用 ${}
。如:select * from t_user order by ${columnName}
5、表名处用#{}会直接报错;order by后面用#{}排序不生效
6、使用 ${} 时,要注意何时加或不加单引号,即${} 和 '${}'
。一般字段类型为char或者varchar时需要加单引号
感谢你能够认真阅读完这篇文章,希望小编分享的"MyBatis中的#{}和${}有什么区别"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
参数
变量
实例
引号
篇文章
动态
步骤
编译
单个
多个
建议
情形
是在
不用
价值
兴趣
前言
同时
名作
地方
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
k8S适合部署数据库集群吗
中国工业企业数据库平台
网络安全等级保护的重要性
购买网络技术开发材料
海思麒麟软件开发部在哪
git 服务器 http
国泰安数据库 类似数据库
技校网络技术专业怎么样
数据库用什么设置性别
爱游戏体育链接不了服务器
光猫改了桥接后需要关闭服务器吗
巨人通力默纳克服务器
企业服务器文件管理系统
宁德市成型设备数控软件开发
三管三监测防控网络安全风险
想从事网络安全入门
2018 网络安全周宣传主题
网络安全和防护安全教案
数据库远程命令
服务器最多可以多少人登录
cpu缺通道服务器会告警吗
红帽 服务器
服务器bios共享端口没有了
软件开发机制
2018 网络安全周宣传主题
网络技术与编辑课程
数据库系统中数据能共享吗
做软件开发好还是云计算好
管家婆sql 数据库下载
厦门敏捷软件开发流程