目录
- 1 标准CRUD使用
- 2 新增
- 3 删除
- 4 修改
- 5 根据ID查询
- 6 查询所有
- 7 MyBatis-Plus CRUD总结
之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介,在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多,我们一个个来学习,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》
1 标准CRUD使用
对于标准的CRUD功能都有哪些以及MP都提供了哪些方法可以使用呢?
我们先来看张图:
对于这张图的方法,我们挨个来演示下:
首先说下,案例中的环境就是咱们入门案例的内容,第一个先来完成新增功能
2 新增
在进行新增之前,我们可以分析下新增的方法:
int insert (T t)
- T:泛型,新增用来保存新增数据
- int:返回值,新增成功后返回1,没有新增成功返回的是0
在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testSave() {
User user = new User();
user.setName("j0ck");
user.setPassword("123456");
user.setAge(4112);
user.setTel("18812345678");
userDao.insert(user);
}
}
执行测试后,数据库表中就会添加一条数据。
3 删除
在进行删除之前,我们可以分析下删除的方法:
int deleteById (Serializable id)
- Serializable:参数类型
- 思考:参数类型为什么是一个序列化类?
从这张图可以看出,
- 思考:参数类型为什么是一个序列化类?
- String和Number是Serializable的子类,
- Number又是Float,Double,Integer等类的父类,
- 能作为主键的数据类型都已经是Serializable的子类,
- MP使用Serializable作为参数类型,就好比我们可以用Object接收任何数据类型一样。
- int:返回值类型,数据删除成功返回1,未删除数据返回0。
- 在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testDelete() {
userDao.deleteById(1401856123725713409L);
}
}
4 修改
在进行修改之前,我们可以分析下修改的方法:
int updateById(T t);
- T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值
- int:返回值,修改成功后返回1,未修改数据返回0
在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testUpdate() {
User user = new User();
user.setId(1L);
user.setName("Tom888");
user.setPassword("tom888");
userDao.updateById(user);
}
}
说明:修改的时候,只修改实体对象中有值的字段。
5 根据ID查询
在进行根据ID查询之前,我们可以分析下根据ID查询的方法:
T selectById (Serializable id)
- Serializable:参数类型,主键ID的值
- T:根据ID查询只会返回一条数据
在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testGetById() {
User user = userDao.selectById(2L);
System.out.println(user);
}
}
6 查询所有
在进行查询所有之前,我们可以分析下查询所有的方法:
List<T> selectList(Wrapper<T> queryWrapper)
- Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null
- List:因为查询的是所有,所以返回的数据是一个集合
在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testGetAll() {
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
}
我们所调用的方法都是来自于DAO接口继承的BaseMapper类中。里面的方法有很多,我们后面会慢慢
去学习里面的内容。
7 MyBatis-Plus CRUD总结
MybatisPlus是一个基于Mybatis的增强工具,提供了很多方便开发的功能,其中包括CURD(增删改查)操作。以下是MybatisPlus的CURD操作的总结:
-
增加操作(Create):
- 使用MybatisPlus的Mapper接口的insert方法:mapper.insert(entity);
- 使用MybatisPlus的BaseMapper接口的insert方法:baseMapper.insert(entity);
-
查询操作(Retrieve):
- 使用MybatisPlus的Mapper接口的selectById方法:mapper.selectById(id);
- 使用MybatisPlus的BaseMapper接口的selectById方法:baseMapper.selectById(id);
- 使用MybatisPlus的Mapper接口的selectList方法:mapper.selectList(queryWrapper);
- 使用MybatisPlus的BaseMapper接口的selectList方法:baseMapper.selectList(queryWrapper);
- 使用MybatisPlus的Mapper接口的selectOne方法:mapper.selectOne(queryWrapper);
- 使用MybatisPlus的BaseMapper接口的selectOne方法:baseMapper.selectOne(queryWrapper);
- 使用MybatisPlus的Mapper接口的selectPage方法:mapper.selectPage(page, queryWrapper);
- 使用MybatisPlus的BaseMapper接口的selectPage方法:baseMapper.selectPage(page, queryWrapper);
-
更新操作(Update):
- 使用MybatisPlus的Mapper接口的updateById方法:mapper.updateById(entity);
- 使用MybatisPlus的BaseMapper接口的updateById方法:baseMapper.updateById(entity);
- 使用MybatisPlus的Mapper接口的update方法:mapper.update(entity, queryWrapper);
- 使用MybatisPlus的BaseMapper接口的update方法:baseMapper.update(entity, queryWrapper);
-
删除操作(Delete):
- 使用MybatisPlus的Mapper接口的deleteById方法:mapper.deleteById(id);
- 使用MybatisPlus的BaseMapper接口的deleteById方法:baseMapper.deleteById(id);
- 使用MybatisPlus的Mapper接口的delete方法:mapper.delete(queryWrapper);
- 使用MybatisPlus的BaseMapper接口的delete方法:baseMapper.delete(queryWrapper);
以上就是MybatisPlus的CURD操作的总结,通过使用MybatisPlus提供的增强工具,可以简化数据库操作的开发工作。