跳到主要内容

Mapper CRUD接口(推荐)

以下介绍常用方法,全部方法请查阅mybatis-plus官网

Insert方法

// 插入一条记录
int insert(T entity);

参数说明

类型参数名描述
Tentity实体对象

测试方法

int insert(T entity);

@Autowired
private UserMapper userMapper;

@Test
void test() {
User user = new User(null,"小明",18,"123@qq.com");
int insert = userMapper.insert(user);
System.out.println("insert = " + insert);
}

返回值为受影响的行数

image-20231031171335414

提示

mybatis-plus的主键默认采用雪花算法生成

image-20231031171552898

Delete方法

// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);

参数说明

类型参数名描述
Collection<? extends Serializable>idList主键 ID 列表(不能为 null 以及 empty)
Serializableid主键 ID

测试方法

int deleteById(Serializable id);

@Autowired
private UserMapper userMapper;

@Test
void test() {
int i = userMapper.deleteById(1719281021255974914L);
System.out.println("i = " + i);
}

返回值为受影响的行数

image-20231031172632217

int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

@Autowired
private UserMapper userMapper;

@Test
void test() {
List<Long> ids = List.of(1L, 2L, 3L);
int i = userMapper.deleteBatchIds(ids);
System.out.println("i = " + i);
}

返回值为受影响的行数

image-20231031172929037

Update方法

// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);

参数说明

类型参数名描述
Tentity实体对象 (set 条件值,可为 null)
Wrapper<T>updateWrapper实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
温馨提示

在调用updateById方法前,需要在T entity(对应的实体类)中的主键属性上加上@TableId注解。

未添加注解的,默认以id为主键

测试方法

int updateById(@Param(Constants.ENTITY) T entity);

@Autowired
private UserMapper userMapper;

@Test
void test() {
User user = new User(4L, "修改", 18,"123@qq.com");
int i = userMapper.updateById(user);
System.out.println("i = " + i);
}

返回值为受影响的行数

image-20231031174538666

int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);

@Autowired
private UserMapper userMapper;

@Test
void test() {
User user = new User(10L, "小红", 22, "123@qq.com");
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
//修改姓名为“Billie”的数据
updateWrapper.eq(User::getName, "Billie");
int i = userMapper.update(user, updateWrapper);
System.out.println("i = " + i);
}

返回值为受影响的行数

image-20231031180221990

Select方法

// 根据 ID 查询
T selectById(Serializable id);
// 根据 Wrapper 条件,查询一条记录
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询总记录数
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
// 根据 Wrapper 条件,查询全部记录(并翻页)
IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

参数说明

类型参数名描述
Serializableid主键 ID
Wrapper<T>queryWrapper实体对象封装操作类(可以为 null)
IPage<T>page分页查询条件(可以为 RowBounds.DEFAULT)

在测试前先恢复原来的数据

image-20231031181307454

测试方法

T selectById(Serializable id);

@Autowired
private UserMapper userMapper;

@Test
void test() {
User user = userMapper.selectById(1L);
System.out.println("user = " + user);
}

返回值为对应的实体类

image-20231031181601688

T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

@Autowired
private UserMapper userMapper;

@Test
void test() {
LambdaQueryWrapper<User> queryWrapper=new LambdaQueryWrapper<>();
//查询姓名为Tom的数据
queryWrapper.eq(User::getName,"Tom");
User user = userMapper.selectOne(queryWrapper);
System.out.println("user = " + user);
}

返回值为对应的实体类

image-20231031181838005

List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

@Autowired
private UserMapper userMapper;

@Test
void test() {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
//查询年龄大于20的数据
queryWrapper.gt(User::getAge, 20);
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}

返回值为对应的实体类集合

image-20231031182114223

Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

@Autowired
private UserMapper userMapper;

@Test
void test() {
//条件为null则查询所有
Long l = userMapper.selectCount(null);
System.out.println("l = " + l);
}

返回值为总记录数

image-20231031182408888