• 介绍

  在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'); 
  • 用法总结

  1、对于变量部分, 应当使用#,这样可以有效的防止sql注入,并且# 都是用到了prepareStement,这样对效率也有一定的提升。

  2、$只是简单的字符拼接而已,对于非变量部分, 那只能使用$, 实际上, 在很多场合,$也是有很多实际意义的 。

  例如 :select * from $tableName$ 对于不同的表执行统一的查询。 $只是字符串拼接, 所以要特别小心sql注入问题。

  3、能同时使用#和$的时候最好用#。

最新文章

  1. 第二章 Rest框架 Nancy
  2. Asp.Net Core--基于角色的授权
  3. 函数图象(N=x+y*i)
  4. cf 730i
  5. Android 应用内存优化 之 onLowMemory & onTrimMemory
  6. String.Format in javascript
  7. 如何在Win8系统上建立WIFI热点
  8. mysql外键实战
  9. 再探Java基础——throw与throws
  10. ♫【HTML5 敏捷实践】第1章 使用语义化的方式实现
  11. window.open()具体解释及浏览器兼容性问题
  12. C++实现最小堆及插入,调整顺序,删除堆顶元素的操作
  13. Effective C++(第三版)笔记 ---- 第一部分让自己习惯C++
  14. ASP代码审计学习笔记 -4.命令执行漏洞
  15. table 样式美化
  16. 数据库实例: STOREBOOK > 表空间 > 编辑 表空间: TEMP
  17. 20145311王亦徐《JAVA程序设计》课程总结
  18. 小技巧:tar命令打包目录时,排除文件和目录的命令
  19. 从大量的IP访问记录中找到访问次数最多的IP
  20. Python学习之高级特性

热门文章

  1. Oracle PLSQL
  2. 在Asp.Net Core中添加区域的简单实现
  3. 教你一招 - 如何给nopcommerce做一套自己的主题
  4. tika提取pdf信息异常
  5. 最常用的DOS命令
  6. ArcGIS实现在线与线交叉处打断线(批量)
  7. page-cache层以及各种标志位之间的转换
  8. linux64需要增加的依赖库
  9. 移动Web 开发中的一些前端知识收集汇总
  10. 信息安全系统设计基础exp_5