MyBatis获取参数值的两种方式:
MyBatis获取参数值的两种方式:${ }和#{ }
~~~~~~~~
$ { }的本质就是字符串拼接,#{ }的本质就是占位符赋值
~~~~~~~~
$ { }使用字符串拼接的方式拼接SQL,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{ }使用占位符赋值的方式拼接SQL,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
单个字面量类型的参数:
~~~~~~~~ 若mapper接口中的方法参数为单个的字面量类型,此时可以使用$ { }和# { }以任意的名称获取参数的值,注意$ { }需要手动加单引号
多个字面量类型的参数:
~~~~~~~~
若mapper接口中的方法参数为多个时:
~~~~~~~~
此时MyBatis会自动将这些参数放在一个map集合中,以arg0, arg1…为键,以参数为值;以param1, param2…为键,以参数为值;因此只需要通过# { }和$ { }访问map集合的键就可以2获取对应的值,注意$ { }需要手动添加单引号
map集合类型的参数:
~~~~~~~~
若mapper接口方法的参数有多个时,可以手动将这些参数放在一个map中存储
~~~~~~~~
只需要通过# { }和$ { }以键的方式访问值即可,但是需要注意$ { }的单引号问题
实体类类型的数据:
~~~~~~~~ 若mapper接口方法的参数是是实体类类型的参数,只需要通过# { }和$ { }以属性的方式访问属性值即可,但是需要注意$ { }的单引号问题
使用@Param标识参数:
~~~~~~~~
可以通过@Param注解标识mapper接口中的方法参数
~~~~~~~~
此时,会将这些参数放在map集合中,以@Param注解的value属性值为键,以参数为值;以param1, param2… 为键。以参数为值;只需要通过$ { }和# { }访问map集合的键就可以获取相应的值,注意$ { }需要手动加单引号
可以将上述五种情况全部整合为通过实体类类型或@Param注解来获取参数