MyBatis Plus 是一个优秀的 MyBatis 增强工具,它简化了 MyBatis 的开发过程,提供了许多便利的 API 和查询构建器(Wrapper),下面对这些API进行简单总结:
Mapper层(即dao层)的BaseMapper
插入操作:int insert(T entity);插入一条记录,参数是实体对象。
根据 ID 查询:T selectById(Serializable id);根据主键 ID 查询一条记录。
根据 ID 更新:int updateById(T entity);根据主键 ID 更新一条记录,参数是实体对象。
根据 ID 删除:int deleteById(Serializable id);根据主键 ID 删除一条记录。
查询所有记录:List<T> selectList(@Param("ew") Wrapper<T> wrapper);可以传入条件构造器
Wrapper
对象进行条件查询。查询记录数:Integer selectCount(@Param("ew") Wrapper<T> wrapper);
查询符合条件的记录数,可以传入条件构造器
Wrapper
对象进行条件查询。分页查询
List<T> selectPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper)分页查询记录,RowBounds是 MyBatis 提供的分页参数对象,Wrapper是条件构造器。条件查询:List<T> selectList(@Param("ew") Wrapper<T> wrapper);
T selectOne(@Param("ew") Wrapper<T> queryWrapper): 根据条件构造器查询一条记录。
service层的Iservice和ServiceImpl
1.插入
boolean save(T entity): 插入一条记录(选择字段,策略插入)。default boolean saveBatch(Collection<T> entityList):根据集合批量插入。 boolean saveOrUpdate(T entity): 插入或更新一条记录(根据记录是否存在主键 id)。 default boolean saveOrUpdateBatch(Collection<T> entityList): 批量插入或更新记录。 boolean saveOrUpdateBatch(Collection<T> entityList,Wrapper<T> queryWrapper): 批量插入或更新记录(只更新有主键的)。 2.查询 default List<T> list():查询所有记录 default <E> List<E> listObjs(): 查询所有记录 default <E> List<E> listObjs(Wrapper<T> queryWrapper): 根据条件构造器查询。 3.更新 boolean updateById(T entity): 根据主键更新记录。 boolean update(@Param("ew") Wrapper<T> updateWrapper): 根据条件构造器更新记录。default boolean updateBatchById(Collection<T> entityList):根据id集合批量更新 4.删除 default boolean removeById(Serializable id):根据id删除 default boolean remove(Wrapper<T> queryWrapper):根据查询条件删除 default boolean removeByIds(Collection<?> list):根据id集合批量删除
Wrapper条件构造器
条件构造器包括查询和更新条件构造器还有lambda条件构造器,用法一致,只是更新在查询的基础上加上了“.set()”方法,详情可去MybatisPlus官网查看。常用的条件筛选方法有如下:
eq(fieldName, value):
- 等于条件,例如
eq("age", 30)
,表示字段age
等于30
。ne(fieldName, value):
- 不等于条件,例如
ne("status", "inactive")
,表示字段status
不等于"inactive"
。gt(fieldName, value) 和 ge(fieldName, value):
- 大于条件和大于等于条件,例如
gt("salary", 50000)
表示salary
大于50000
。lt(fieldName, value) 和 le(fieldName, value):
- 小于条件和小于等于条件,例如
lt("birthDate", LocalDate.now())
表示birthDate
小于当前日期。like(fieldName, value):
- 模糊查询条件,例如
like("name", "John%")
,表示name
字段以"John"
开头的记录。between(fieldName, value1, value2):
- 范围查询条件,例如
between("salary", 30000, 60000)
,表示salary
在30000
和60000
之间。isNull(fieldName) 和 isNotNull(fieldName):
- 空值和非空值条件,例如
isNull("email")
,表示in(fieldName, List<value>) 和 notIn(fieldName, List<value>):
- 包含和不包含条件,例如
in("department", Arrays.asList("IT", "HR"))
,表示department
在指定的部门列表中。orderBy(fieldName, isAsc):
- 排序条件,例如
orderBy("age", true)
表示按照age
字段升序排列。groupBy(fieldName):
- 分组条件,例如
groupBy("department")
,表示按照department
字段分组。and() 和 or():
- 逻辑与和逻辑或条件,用于组合多个条件。