单个参数:
不做处理
多个参数:
mybatis将参数封装成一个map
[0, 1, param1, param2] 的形式
所以 sql应写成这样的形式:
select*from employee where id = #{param1} and name=#{param2}
参数命名:明确指定封装参数时map的key:
public Employee getEmpByIdAndName(@Param("id")int id,@Param("name")String name);
如果多个参数正好是业务逻辑的数据模型,可以直接传入pojo:
#{属性名}:取出传入的pojo的属性值
map:
如果多个参数不是业务数据模型,不经常使用,可以传入map
#{key}:取出map中对应的值
public Employee getEmpByMap(Map<String , Object> map);
Map<String, Object> map=new HashMap<>();
map.put("id", 1);
map.put("name", "a");
Employee employee=mapper.getEmpByMap(map);
TO:
如果多个参数不是业务数据模型,经常使用,可以编写一个TO数据传输对象
page{
int index;
int size;
}
#{}和${}的区别:
${}里的参数会在控制台的sql语句中显示出来
#{}是以预编译的形式,将参数设置到sql语句中,preparedStatement,防止sql注入
原生jdbc不支持占位符的地方可以使用${}进行取值
#{}规定参数规则: