likes
comments
collection
share

一起来学Mybatis Plus(五) & Mapper CRUD接口

作者站长头像
站长
· 阅读数 5

前言

目前正在出一个Mybatis Plus系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

之前给大家讲过Mybatis教程,而MyBatis-Plus 是一个 MyBatis 的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。大家需要注意的是它只是一个工具,大家需要掌握和重点学习的依然是Mybatis,在熟练掌握基础的情况下使用MyBatis-Plus会达到事半功倍的效果。

好了, 废话不多说直接开整吧~

Mapper & CRUD

  • 通用 CRUD 封装BaseMapper (opens new window)接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 泛型 T 为任意实体对象
  • 参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键
  • 对象Wrapper 为 条件构造器

下面一起来看下相关的方法,其实很多方法和上节讲的Service类似,有的方法名不一样,但是传参是想通的

Insert

// 插入一条记录
int insert(T entity);
  • T entity 实体对象

示例:

User user = new User();
user.setName("小明");
user.setAge(18);
user.setVersion(1);
userMapper.insert(user);

Delete

// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
  • Wrapper wrapper 实体对象封装操作类(可以为 null)
  • Collection<? extends Serializable> idList 主键 ID 列表(不能为 null 以及 empty)
  • Serializable id 主键 ID
  • Map<String, Object> columnMap 表字段 map 对象
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","小明-saveOrUpdate1");
userMapper.delete(queryWrapper);

其它方法参考上节的Service

Update

// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
  • T entity 实体对象 (set 条件值,可为 null)
  • Wrapper updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","小明1");
User user1 = new User();
user1.setName("小明1-UPDATE");

userMapper.update(updateWrapper);

Select

// 根据 ID 查询
T selectById(Serializable id);
// 根据 entity 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 查询(根据ID 批量查询)
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 entity 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 查询(根据 columnMap 条件)
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
// 根据 Wrapper 条件,查询全部记录
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录。注意: 只返回第一个字段的值
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

// 根据 entity 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
  • Serializable id 主键 ID
  • Wrapper queryWrapper 实体对象封装操作类(可以为 null)
  • Collection<? extends Serializable> idList 主键 ID 列表(不能为 null 以及 empty)
  • Map<String, Object> columnMap 表字段 map 对象
  • IPage page 分页查询条件(可以为 RowBounds.DEFAULT)

就不一一演示了,大家可以自己试一下方法,看看结果

ActiveRecord 模式

该模式实体类只需继承 Model 类即可进行强大的CRUD操作,需要项目中已注入对应实体的BaseMapper

public class User extends Model<User> implements Serializable {
    // ....
}

使用示例

User user = new User();
user.setName("小明");
user.setAge(18);
user.setVersion(1);
user.insert();

List<User> list = user.selectAll();

User user1 = new User();
user1.setId(1731552348470849545L);
user1.setName("小明hhh");
user1.setAge(18);
user1.setVersion(1);
user1.updateById();

user1.deleteById();
user1.deleteById(1731552348470849545L);

使用起来非常的方便,大家可以根据自己的项目需求选择合适crud方法

结束语

下节给大家讲解条件构造器,这个注意用查询条件构造

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

MybatisPlus教程相关文章

往期Nginx教程相关文章

往期Docker教程相关文章

往前Shell脚本编程相关文章

往期Linux相关文章

往期面试题相关文章

项目源码(源码已更新 欢迎star⭐️)

往期设计模式相关文章

设计模式项目源码(源码已更新 欢迎star⭐️)

Kafka 专题学习

项目源码(源码已更新 欢迎star⭐️)

ElasticSearch 专题学习

项目源码(源码已更新 欢迎star⭐️)

往期并发编程内容推荐

推荐 SpringBoot & SpringCloud (源码已更新 欢迎star⭐️)

博客(阅读体验较佳)