当请求参数只有一个时,Mybatis不会对参数进行任何特殊处理
可以直接使用#{字段名}来获取参数值
当请求参数有多个的时候,Mybatis会将这些参数封装到一个Map中
Map的key:param1.........paramN,也可以直接使用0.......N
Map的value:就是请求参数的值
需要用#{指定的key}来取出值
//根据id和性别来查询一条信息
//Mybatis如何封装多个请求参数的
public Employee queryByIdName(Integer id,String name);
<select id="queryByIdName" resultType="employee">
select * from employee where id=#{param1} and name=#{param2}
<!-- select * from employee where id=#{0} and name=#{1} -->
</select>
我们也可以直接指定使用什么字段,在接口的方法中加上@Param注解就可以
public Employee queryByIdName(@Param("id")Integer id,@Param("name")String name);
当请求参数为Collection,数组类型时
此时Mybatis会进行特殊处理,
Collection类型,key为collection
List类型,key为list
数组,key为array
#{}和${}的区别
#{}会使用预编译的方式来处理sql语句,${}会直接将值拼接到sql中
所以${}存在安全问题
不过在原生jdbc不支持占位符的地方可以使用${}来进行取值
比如表名,排序查询