${ }: insert into emp values(null,admin,23,男)
Statement:必须使用字符串拼接的方式操作sql,一定要注意单引号,例:'${}'
#{}:insert into emp values(null,?,?,?)
PreparedStatement:可以使用通配符操作sql,因为在为string赋值时,可以自动加单引号,因此不需要注意单引号
1、当传输参数为单个String或基本类型和其包装类
#{}:可以以任意的名字获取参数 ${}:只能以${value} 和 ${_parameter}获取
2、当传输参数为Javabean时
#{}和${}都可以通过属性名直接获取属性值,但是要注意${}的单引号问题
两种方式:
(1)键为0,1,2,3...N-1,以参数为值
(2)键为param1,param2,param3....paramN,以参数为值
#{}:#{0},#{1};或#{param1},#{param2} ${}:${param1},${param2}; 但是要注意${}的单引号问题
4、当传输Map参数时
#{}和${}都可以通过键的名字直接获取,但是要注意${}的单引号问题
可以通过@Param("key")为map集合指定键的名字
Emp getEmpByEidAndEnameByParam(@Param("eid")String eid, @Param("ename")String ename); 键是eid,值是eid....
List以 'list' 为键,Array以 'array' 为键,除非自己重新命名键名