MyBatis 获取参数值的两种方式:${}
和 #{}
${}
:本质就是字符串拼接
#{}
:本质就是占位符赋值
${}
使用字符串拼接的方式拼接 sql,若为字符串类型或日期类型的字符进行赋值时,需要手动加单引号
#{}
使用占位符赋值的方式拼接 sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号
/*** 根据用户名查询用户信息* @param username* @return*/User getUserByUsername(String username);
若 mapper 接口中的方法参数为多个时
此时 MyBatis 会自动将这些参数放在一个 map 集合中,以 arg0,arg1… 为键,以参数为值;以 param1,param2… 为键,以参数为值;因此只需要通过 ${}
和 #{}
访问 map 集合的键就可以获取相对应的值,注意 ${}
需要手动加单引号
/*** 检查用户是否登录成功* @param username* @param password* @return*/User checkLogin(String username, String password);
若 mapper 接口中的方法需要的参数为多个时,此时可以手动创建 map 集合,将这些数据放在 map 中只需要通过 ${}
和 #{}
访问 map 集合的键就可以获取相对应的值,注意 ${}
要手动加单引号
/*** 使用map结合作为参数检查用户是否登录成功* @param map* @return*/User checkLoginByMap(Map map);
若 mapper 接口中的方法参数为实体类对象时
此时可以使用 ${}
和 #{}
,通过访问实体类独享中的属性名获取属性值,注意 ${}
需要手动加单引号
/*** 使用实体类插入数据* @param user* @return*/int insert(User user);
insert into t_user values(null, #{username}, #{password}, #{age}, #{sex}, #{email});
可以通过 @Param
注解标识 mapper 接口中的方法参数
此时,会将这些参数放在 map 集合中,以 @Param
注解的 value 属性值为键,以参数为值;以 param1,param2… 为键,以参数为值;只需要通过 ${}
和 #{}
访问 map 集合就可以获取相应的值,注意 ${}
需要手动加单引号
/*** 通过@Param注解验证用户登录* @param username* @param password* @return*/User checkLoginByParam(@Param("username") String username, @Param("password") String password);