Wrapper 是 MyBatis-Plus 提供的一种查询条件构造器,用于构建动态 SQL 查询语句。它可以方便地进行复杂的查询条件拼接,并支持多种查询条件的组合。
Wrapper 包含以下四个实现类:
- AbstractWrapper:抽象类,提供了基本的查询条件构造器;
- QueryWrapper:查询条件构造器类,用于构造 SELECT 语句中的 WHERE 子句;
- UpdateWrapper:更新条件构造器类,用于构造 UPDATE 语句中的 SET 子句和 WHERE 子句;
- LambdaQueryWrapper:Lambda 表达式查询条件构造器类,与 QueryWrapper 类似,但使用了 Java 8 Lambda 表达式风格。
使用 Wrapper 可以方便地进行复杂的动态查询条件构造,例如,可以根据用户输入的参数组合不同的查询条件,构造出不同的 SQL 查询语句,并传递给 MyBatis 进行执行。同时,MyBatis-Plus 还提供了丰富的查询条件函数和操作符,可以满足大部分的查询需求。
以下是一个使用 QueryWrapper 进行查询的示例:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom").or().like("email", "gmail.com");
List<User> userList = userMapper.selectList(wrapper);
该代码通过 QueryWrapper 构造了一个查询条件,要求查询名字为 Tom 或者邮箱包含 gmail.com 的用户记录,并使用 selectList 方法执行查询操作。
总之,Wrapper 是 MyBatis-Plus 提供的一种方便快捷的查询条件构造器,可以帮助开发者轻松构造复杂的 SQL 查询语句,并提高代码的可读性和可维护性。
AbstractWrapper 是 MyBatis-Plus 中最顶端的抽象类,它实现了 Wrapper 接口,并提供了基础的查询条件构造器方法。其他三种 Wrapper 类(QueryWrapper、UpdateWrapper、LambdaQueryWrapper)都继承自 AbstractWrapper,并在此基础上提供了更丰富的方法来满足不同的查询需求。
AbstractWrapper 的主要使用方法包括以下几个方面:
- 构造函数:AbstractWrapper 有多个重载的构造函数,可以直接传入实体类类型和数据库表名等参数来初始化 Wrapper 对象。
public AbstractWrapper() {}
public AbstractWrapper(Class<T> entityClass) {}
public AbstractWrapper(String tableName) {}
public AbstractWrapper(String tableName, Class<T> entityClass) {}
- 通用查询条件构造方法:AbstractWrapper 提供了一些常用的查询条件构造方法,例如
eq
、ne
、like
、in
等。这些方法都是使用 Wrapper 的链式调用方式进行调用的。
public AbstractWrapper<T> eq(String column, Object value) {}
public AbstractWrapper<T> ne(String column, Object value) {}
public AbstractWrapper<T> like(String column, Object value) {}
public AbstractWrapper<T> in(String column, Collection<?> value) {}
- 链式调用:MyBatis-Plus 的 Wrapper 支持链式调用,可以使用 and 和 or 进行逻辑组合,例如:
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "Tom").or().like("email", "gmail.com");
以上代码构造了一个查询条件,要求查询名字为 Tom 或者邮箱包含 gmail.com 的用户记录,并使用 selectList 方法执行查询操作。
- 查询条件组装方法:除了常用的单一查询条件构造方法外,AbstractWrapper 还提供了一些查询条件组装方法,例如
apply
、last
等,这些方法可以帮助我们更灵活地构造复杂的查询条件组合。
public AbstractWrapper<T> apply(String applySql, Object... params) {}
public AbstractWrapper<T> last(String lastSql) {}
总之,AbstractWrapper 是 MyBatis-Plus 提供的最顶级的查询条件构造器抽象类,提供了基础的查询条件组装方法,其他 Wrapper 类都是在此基础上进行扩展和优化。开发人员可以根据自己的需求选择合适的 Wrapper 类并灵活使用其中的方法来构造查询条件,以实现快速高效的数据操作。
Mybatis-Plus中常用的类有:
BaseMapper
:提供了一些常用的CRUD方法,包括插入、删除、更新和查询等操作;Wrapper
:封装了条件构造器,可以实现动态拼接SQL语句;QueryWrapper
:继承自Wrapper
,用于构造查询条件;UpdateWrapper
:继承自Wrapper
,用于构造更新条件;LambdaQueryWrapper
:基于lambda表达式的查询条件构造器,相比QueryWrapper
更为简洁、直观;LambdaUpdateWrapper
:基于lambda表达式的更新条件构造器,相比UpdateWrapper
更为简洁、直观;Page
:分页查询对象,用于指定查询结果的偏移量和限制数量;PageHelper
:Mybatis-Plus提供的分页插件,实现了自动拦截分页请求并进行分页查询。-
BaseMapper
是MyBatis-Plus中非常重要的一个类,它提供了一些通用的CRUD方法,包括插入、删除、更新和查询等操作。开发者可以通过继承BaseMapper
来实现对数据库表的基本操作,而不需要手动编写SQL语句。使用
BaseMapper
可以帮助开发者避免编写常规的增删改查SQL语句的繁琐工作,减少代码量,提高开发效率。同时,BaseMapper
还支持自定义SQL语句的编写,满足开发者的个性化需求。在使用
BaseMapper
时,需要注意几个事项: - 需要在Mapper接口上加上注解@Mapper;
- 具体的业务Mapper需要继承BaseMapper,并指定泛型为实体类类型;
- 对于自定义的SQL语句,建议使用@InsertProvider、@UpdateProvider、@DeleteProvider等注解来定义SQL语句,这样可以更方便的使用mybatis-plus中的动态SQL标签;