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集合指定键的名字
#{}和${}都可以通过键的名字直接获取值,但是要注意${}的单引号问题