[转]ibatis中井号跟美元符号区别(#、$)

Mybatis中如何在SQL语句表名中使用参数

insert into prefix_${table_name} (a, b, c) values (#{a}, #{b}, #{c})

${} 表示直接使用字面量(literal value)

#{} 表示这个是个参数

如果 table_name 是 “ABC”

则 ${table_name} 是 ABC

#{table_name} 是 “ABC"

Java代码  

  1. 1.#可以进行预编译,进行类型匹配,#变量名# 会转化为 jdbc 的 类型
  2. $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容
  3. 例如:
  4. select * from tablename where id = #id# ,假设id的值为12,其中如果数据库字段id为字符型,那么#id#表示的就是‘12‘,如果id为整型,那么#id#就是 12
  5. 会转化为jdbc的 select * from tablename where id=?,把?参数设置为id的值
  6. select * from tablename where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,
  7. 那么Sql语句应该写成 select * from table where id = ‘$id$‘
  8. 3.#方式能够很大程度防止sql注入.
  9. 4.$方式无法防止sql注入.
  10. 5.$方式一般用于传入数据库对象.例如传入表名.
  11. 6.所以ibatis用#比$好,一般能用#的就别用$.
  12. 另外,使用##可以指定参数对应数据库的类型
  13. 如:
  14. select * from tablename where id = #id:number#
  15. 在做in,like 操作时候要特别注意
  16. 总结以下:
  17. $号使用在具体pojo类也就是非基本类型的取值,而#号使用在具体有基本类型的取值
  18. <sql id="Update_By_Example_Where_Clause">
  19. <where>
  20. <foreach collection="example.oredCriteria" item="criteria" separator="or">
  21. <if test="criteria.valid">
  22. <trim prefix="(" prefixOverrides="and" suffix=")">
  23. <foreach collection="criteria.criteria" item="criterion">
  24. <choose>
  25. <when test="criterion.noValue">
  26. and ${criterion.condition}
  27. </when>
  28. <when test="criterion.singleValue">
  29. and ${criterion.condition} #{criterion.value}
  30. </when>
  31. <when test="criterion.betweenValue">
  32. and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
  33. </when>
  34. <when test="criterion.listValue">
  35. and ${criterion.condition}
  36. <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
  37. #{listItem}
  38. </foreach>
  39. </when>
  40. </choose>
  41. </foreach>
  42. </trim>
  43. </if>
  44. </foreach>
  45. </where>
  46. </sql>
时间: 2024-10-20 02:00:37

[转]ibatis中井号跟美元符号区别(#、$)的相关文章

ibatis中井号跟美元符号区别(#、$)

1.#可以进行预编译,进行类型匹配,#变量名# 会转化为 jdbc 的 类型 $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容 例如: select * from tablename where id = #id# ,假设id的值为12,其中如果数据库字段id为字符型,那么#id#表示的就是'12',如果id为整型,那么#id#就是 12 会转化为jdbc的 select * from tablename where id=?,把?参数设置为id的值 select *

MyBatis中井号与美元符号的区别

#{变量名}可以进行预编译.类型匹配等操作,#{变量名}会转化为jdbc的类型. select * from tablename where id = #{id}假设id的值为12,其中如果数据库字段id为字符型,那么#{id}表示的就是'12',如果id为整型,那么id就是12,并且MyBatis会将上面SQL语句转化为jdbc的select * from tablename where id=?,把?参数设置为id的值. ${变量名}不进行数据类型匹配,直接替换. select * from

URL中#(井号)的作用(转)

2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变成了 http://twitter.com/#!/username 在我印象中,这是主流网站第一次将"#"大规模用于直接与用户交互的关键URL中.这表明井号(Hash)的作用正在被重新认识.本文根据HttpWatch的文章,整理与井号有关的所有重要知识点. 一.#的涵义 #代表网页中的一个

xml中${}的使用含义(美元符号大括号,以Spring、ibatis、mybatis为例)

项目中,经常会在xml中看到这样的写法: <properties resource="properties/database.properties"/> <dataSource type="SIMPLE"> <property value="${driver}" name="JDBC.Driver"/> <property value="${url}" name=&

html5 css选择器。 井号,句号的区别

.理解CSS的样式组成CSS里的样式表是有规则组成的,每条规则有三个部分组成:1.选择器(如下面例子中的:"body"),告诉浏览器文档的哪个部分受规则影响:2.属性(如实例中的font-family.color等),规定了布局的什么方面被设置了:3.值(如实例中的Arial,sans-serif,#333333等),给出了式样属性的值. 二.CSS式样中不同符号的区别 #是ID选择器 .是class选择器 *是通配符号 比如*{margin:0:padding:0:所有的元素都会沿用

html5 css选择器 井号, 句点的区别

一.理解CSS的样式组成CSS里的样式表是有规则组成的,每条规则有三个部分组成:1.选择器(如下面例子中的:"body"),告诉浏览器文档的哪个部分受规则影响:2.属性(如实例中的font-family.color等),规定了布局的什么方面被设置了:3.值(如实例中的Arial,sans-serif,#333333等),给出了式样属性的值. 二.CSS式样中不同符号的区别 #是ID选择器 .是class选择器 *是通配符号 比如*{margin:0:padding:0:所有的元素都会沿

shell脚本中常见的一些特殊符号和作用详解

这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1.{} 大括号: 用法一:通配符扩展eg: ls my_{finger,toe}s这条命令相当于如下命令的组合:ls my_fingers my_toeseg: mkdir {userA,userB,userC}-{home,bin,data}我们将得到

C/C++ 中##(两个井号)和#(一个井号)用法

##(两个井号)和#(一个井号)都是什么意思 连接符 ##(两个井号) 不知道什么符 #(一个井号) ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串.但它不可以是第一个或者最后一个子串.所谓的子串(token)就是指编译器能够识别的最小语法单元.具体的定义在编译原理里有详尽的解释 #符是把传递过来的参数当成字符串进行替代. 假设程序中已经定义了这样一个带参数的宏: #define PRINT( n ) printf( "token&

$ -----JavaScript 中美元符号 $ 的作用

JavaScript 中美元符号 $ 是什么 1.首先可以用来表示变量,比如变量 var s='asdsd'或var $s='asdasd'; 2.在正则表达式中,它可以匹配结尾:/sa$/.test(string)匹配string字符串中的sa,比如string='125sa'则匹配,string='125sa21'则不匹配正则表达式很复杂,这里只是简单的说说. 3.由于受prototype.js(老外写的框架,用于将一些常用的函数封装,方便操作)的影响,现在很多人都用 $来表示一个查找对象的