MyBatis 内置参数对象可以怎么使用?

MyBatis 内置了几个非常有用的参数对象:

_parameter:代表整个参数对象

可以直接使用:

select * from user where id = #{_parameter}

然后传入 User 对象:

userMapper.selectById(user);

MyBatis 会通过反射获取 user 中的 id 属性。

#{parameter}:代表参数的属性

可以指定参数的属性名:

select * from user where id = #{id}

传入参数:

userMapper.selectById(user); 

会获取user.id属性。

$_parameter:代表参数中的Map或Object对象的值

如果参数是一个 Map:

Map<String, Object> map = new HashMap<>();
map.put("id", 1); 

则在SQL中可以这样用:

select * from user where id = ${id}  

传入 map 就可以了。
通过名称取出 map 中的值。

* :代表所有参数

select * from user where ${age} > #{age}

这里通过 * 获取所有参数,然后取 age 属性。

MyBatis 内置参数对象可以很方便的取出参数中的属性值,简化了SQL映射。

主要特点是:

  • _parameter 代表整个参数对象
  • #{parameter} 代表参数属性
  • $parameter$ 代表 map 中的值
  • * 代表所有参数

内置参数对象大大方便了参数的传递。