mybatis中#{}
#{}占位符是为了获取值,获取的值作用在where语句后insert语句后,update语句后,
#{}获取值,是根据值得名称取值
a) 参数是基本数据类型,那么在映射的语句中可以不写paramterType,#{}中的参数名也可以随意写
b) 参数是自定义类型,那么必须填paramterType,#{}中的名称是自定义类型的属性名,该属性有对应的get方法。如果没有get方法,那么会根据反射去获取该类型的值,如果找不到,那么ReflectionException异常
c) 参数可以是map类型,那么#{}中的名称为map的key值即可
mybatis中的${}
可以从properties文件中获取值,也可以作为表名,列名等,
在mybatis中#和$的主要区别
(1)#传入的参数在sql中显示为字符串,$传入的参数在sql中直接显示为传入的值,
(2)#方式能够很大程度防止sql注入,$方式无法防止Sql注入
(3)能用 #{} 的地方就用 #{},不用或少用 ${}
(4)表名作参数时,必须用 ${}。如:select * from ${tableName}
(5)order by 时,必须用 ${}。如:select * from t_user order by ${columnName}
(6)使用 ${} 时,要注意何时加或不加单引号,即 和 ′ {} 和 ' 和′{}’