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