浅谈mybatis中#{}和${}的区别
2024-10-19 12:08:41
#{}:表示占位符,如果获取简单类型,#{}中可以使用value或其它名称。有效防止sql注入。使用#{}设置参数无需考虑参数的类型。
如果使用#{}比较日期字段,select* from tablename where birthday >=#{birthday}
${}:表示sql拼接,如果获取简单类型,#{}中只能使用value 。无法防止sql注入。使用${}设置参数必须考虑参数的类型,比如:使用oracle查询条件是日期类型,如果使用${},必须人为将${}两边加单引号通过to_date转日期。
Select * fromtable where birthday >=to_date(‘${birthday}’,’yyyy-MM-dd’)
在没有特殊要求的情况下,建议使用#{}占位符
有些情况必须使用${},
比如:需要动态拼接表名,Select *from ${tablename}
动态拼接排序字段:select *from tablename order by ${username} desc
最新文章
- BootStrap学习笔记,优缺点总结
- 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)
- 【原创Android游戏】--猜数字游戏Version 0.1
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(1) - 增删改
- My_Python的常用函数.
- 16、WPF中的命令
- Java transient、Volatile关键字
- Android:自定义滚动边缘(EdgeEffect)效果
- =>; 朗姆达表达式带入符号
- Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
- nginx 配置 同一域名端口下,根据URL 导向不同的项目目录
- VS2017编译SNMP++步骤记录
- 分页Sql语句
- MySQL chartset
- Practice1小学四则运算
- centos 6.5 ftp服务配置及客户端使用
- C# HttpWebRequest请求超时解决办法
- LoadRunner 自带订票系统flights 功能空白、1080端口被占用的解决办法
- Android之SlideMenu实例Demo
- 【记录】cygwin下折腾个人配置环境