MyBatis Plus的内置参数对象中,有一个 wrapping 对象。
它的作用是将查询条件封装到一个map中,以方便调用:
{
"ew" : {
"sqlSegment" : "name like concat('%',#{name},'%')"
}
}
然后在SQL语句中,可以使用${ew.sqlSegment}来调用:
@Select("select * from user ${ew.sqlSegment}")
List<User> selectList(@Param("ew") Wrapper<User> wrapper);
这里相当于调用了 name like concat(‘%’,#{name},’%’) 的条件。
MyBatis Plus提供了多种Wrapper类来生成 wrapping 对象:
- QueryWrapper 构造条件对象
- StringWrapper 封装 String 参数
- CollectionWrapper 封装 Collection参数
使用 wrapping 对象的好处是:
- 将复杂条件封装在 wrapping 对象中
- 方便在SQL语句中引用参数
- 有效复用 wrapping 对象
举个例子:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18);
List<User> list1 = userMapper.selectList(wrapper);
List<User> list2 = userMapper.selectByCustom(wrapper);
// 分别调用2次 wrapping 对象
总的来说,使用MyBatis Plus的 wrapping 对象可以:
- 将复杂条件封装在对象中
- 在SQL中方便调用参数
- 复用同一个 wrapping 对象
提高SQL的参数传递效率与复用性。