mybatis获取参数数值的两个方式

${ }: 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);
键是eid,值是eid....

6、当传输参数为List或Array,mybatis会将List或Array放在map中,

List以 'list' 为键,Array以 'array' 为键,除非自己重新命名键名

posted @ 2020-09-02 15:30  星峰之耀  阅读(1471)  评论(0编辑  收藏  举报