Mybatis获取参数值的两种方式
${}
Statement, 必须使用字符串拼接的方式操作SQL, 一定要注意单引号问题
#{}
PreparedStatement: 可以使用通配符操作SQL, 因为在为String赋值时,可以自动加单引号, 因此不需要注意单引号问题
使用建议: 建议使用#{}
,在特殊情况下, 需要使用${}
, 例如模糊查询
和批量查询
不同的参数类型, ${}和#{}的不同取值方式
当传输参数为单个String或基本数据类型和其他包装类
${}
只能以${value}
或${_parameter}
获取#{}
可以以任意的名字获取参数值
当传输参数为JavaBean时
#{}
和${}
都可以通过属性名直接获取属性值,但是要注意${}
的单引号问题
当传输多个参数时, mybatis会默认将这些参数放在map集合中
- 两种方式:
- 键为0,1,2,3...N-1
- 键为param1, param2, param3....paramN
#{}
: #{0}, #{1}; #{param1}, #{param2}${}
:{param2},但是要注意`${}`的单引号问题
当传输Map参数时
#{}
和${}
都可以通过键的名字直接获取值,但是要注意${}
的单引号问题
命名参数
- 可以通过@Param("key")为map集合指定键的名字
#{}
和${}
都可以通过键的名字直接获取值,但是要注意${}
的单引号问题