MyBatis获取参数值:${},#{}
${}本质就是字符串拼接方式,#{}的本质就是占位符赋值,${}使用字符串拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
- 单个字面量类型的参数
若mapper接口中的方法参数为单个字面量类型,此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引号,当只有一个参数的时候,随便一个参数名称都可以代表当前的参数,比如方法中的参数是username,在对应的mapper映射文件中的方法里可以使用name或者任意字符串都会指向username参数。3.5版本之后二者区别不是特别明显 - 多个字面量类型的参数
若mapper接口中的方法参数为多个时,此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1…为键,以参数为值;以param1,param2…为键,以参数位置;此时只需要通过#{}和${}访问map集合的键就可以获取相对的值,注意$需要手动加单引号 - map集合类型的参数
若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号
- 实体类类型的参数
这种方式其实是使用get方法获取到的属性值 - @Param注解