Mybatis 中在传参时,$ 和# 的区别
2016-01-15 14:23
316 查看
MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型。
在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者${parameterName},
首先,我们说一下这两种引用参数时的区别,使用#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,例如传入参数是“Smith”,那么在SQL(Select * from emp where name = #{employeeName})使用的时候就会转换为Select * from emp where name = 'Smith';同时在SQL(Select * from emp where name = ${employeeName})使用的时候就会转换为Select * from emp where name = Smith。
再次,从安全性上考虑,能使用#尽量使用#来传参,因为这样可以有效防止SQL注入的问题。
最后总结一下必须使用$引用参数的情况,我能想到的目前只有一种,那就是参数的int型的时候,必须使用$引用。
在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者${parameterName},
首先,我们说一下这两种引用参数时的区别,使用#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,例如传入参数是“Smith”,那么在SQL(Select * from emp where name = #{employeeName})使用的时候就会转换为Select * from emp where name = 'Smith';同时在SQL(Select * from emp where name = ${employeeName})使用的时候就会转换为Select * from emp where name = Smith。
再次,从安全性上考虑,能使用#尽量使用#来传参,因为这样可以有效防止SQL注入的问题。
最后总结一下必须使用$引用参数的情况,我能想到的目前只有一种,那就是参数的int型的时候,必须使用$引用。
相关文章推荐
- js-Event构造函数,也许你需要
- .net 连接sqlserver类库
- POJ2182(排队问题)
- 深入理解Android View
- 【转】python数据格式化之pprint
- iOS开发之添加自定义字体
- 内存错误
- iOS What The Fuck UITableView
- iOS8 以上版本的定位问题
- H3C S5120交换机OID
- Linux里startup.sh 和 shutdown.sh
- .net连接access操作类
- Android 第三方开源库收集整理(转)
- Windows Cmder
- HTTP代理模块(HTTP Proxy)
- for循环中的Ajax
- 过滤器Filter
- jfreechart生成报表(定时器中)
- 数组的倒置引发对数据结构以及算法的一点点小想法
- Reverse Linked List II