SqlMap中中$与#的区别
来源:互联网 发布:java程序员电脑配置 编辑:程序博客网 时间:2024/04/30 10:25
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,
例如: select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。
select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table where id = '$id$'
$ 的作用实际上是字符串拼接,
select * from $tableName$
等效于
StringBuffer sb = new StringBuffer(256);
sb.append("select * from ").append(tableName);
sb.toString();
#用于变量替换
select * from table where id = #id#
等效于
prepareStement = stmt.createPrepareStement("select * from table where id = ?")
prepareStement.setString(1,'abc');
说道这里, 总结一下, 什么时候用$,什么时候 用 #
对于变量部分, 应当使用#, 这样可以有效的防止sql注入, 未来,# 都是用到了prepareStement,这样对效率也有一定的提升
$只是简单的字符拼接而已,对于非变量部分, 那只能使用$, 实际上, 在很多场合,$也是有很多实际意义的
例如
select * from $tableName$ 对于不同的表执行统一的查询
update $tableName$ set status = #status# 每个实体一张表,改变不用实体的状态
特别提醒一下, $只是字符串拼接, 所以要特别小心sql注入问题。
- SqlMap中中$与#的区别
- ibatis(sqlmap)中 #与$的使用区别
- ibatis中SqlMap的配置
- Java ibatis 中sqlmap的配置文件
- ibatis sqlMap 中注释引发的问题
- mybatis sqlmap中property遇到的问题
- ibatis 中sqlMap配置
- iBatis配置文件中sqlmap异常
- ibatis(sqlmap)中使用in语句的方法
- ibatis(sqlmap)中使用in语句的方法
- ibatis的SqlMap.xml中传递多参数
- “未明确定义列” ibatis的sqlMap中报该
- ibatis(sqlmap)中使用in语句的方法
- ibatis(sqlmap)中使用in语句的方法
- java中运行sqlmap中等待输入的问题
- JSP中与的区别
- CSS中#与.的区别
- ibatis中$与#的区别
- WV.3-动态链表-新结点总是链表头
- python 栈
- JSP中pageEncoding contentType 字符编码个人归纳总结
- mysql创建index索引
- onCreateOptionsMenu()方法
- SqlMap中中$与#的区别
- Android 动态库和静态库
- codeforces Misha and Permutations Summation
- TeamFoundation 实现团队项目管理
- XAMPP Error: Apache shutdown unexpectedly. 解决思路
- cocos2d-x-3.3-016-国际化string.xml
- OC - 单例模式
- eclipse下安装pydev,google app engine 插件无法显示设置的问题
- Q1.7 set Matrix zeroes