四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发

一、标准CRUD使用对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢?
我们先来看张图:

四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发

文章插图
1.1 环境准备这里用的环境就是Java开发学习(四十)----MyBatisPlus入门案例与简介中使用的环境
二、新增在进行新增之前,我们可以分析下新增的方法:
int insert (T t)
  • T:泛型,新增用来保存新增数据
  • int:返回值,新增成功后返回1,没有新增成功返回的是0
在测试类中进行新增操作:
@SpringBootTestclass Mybatisplus01QuickstartApplicationTests {?    @Autowired    private UserDao userDao;?    @Test    void testSave() {        User user = new User();        user.setName("黑马程序员");        user.setPassword("itheima");        user.setAge(12);        user.setTel("4006184000");        userDao.insert(user);  }}执行测试后,数据库表中就会添加一条数据 。
【四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发】
四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发

文章插图
但是数据中的主键ID,有点长,那这个主键ID是如何来的?我们更想要的是主键自增,应该是5才对,这个是我们后面要介绍的主键ID生成策略 , 这块的这个问题,我们暂时先放放 。
三、删除在进行删除之前 , 我们可以分析下删除的方法:
int deleteById (Serializable id)
  • Serializable:参数类型
    • 思考:参数类型为什么是一个序列化类?
      四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发

      文章插图
      从这张图可以看出,
      • String和Number是Serializable的子类,
      • Number又是Float,Double,Integer等类的父类,
      • 能作为主键的数据类型都已经是Serializable的子类 , 
      • MyBatisPlus使用Serializable作为参数类型,就好比我们可以用Object接收任何数据类型一样 。
  • int:返回值类型,数据删除成功返回1,未删除数据返回0 。
在测试类中进行新增操作:
@SpringBootTestclass Mybatisplus01QuickstartApplicationTests {?    @Autowired    private UserDao userDao;?    @Test    void testDelete() {        // 传入主键id        userDao.deleteById(1401856123725713409L);  }}?四、修改在进行修改之前 , 我们可以分析下修改的方法:
int updateById(T t);
  • T:泛型 , 需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值
  • int:返回值,修改成功后返回1,未修改数据返回0
在测试类中进行新增操作:
@SpringBootTestclass Mybatisplus01QuickstartApplicationTests {?    @Autowired    private UserDao userDao;?    @Test    void testUpdate() {        User user = new User();        user.setId(1L);        user.setName("Tom888");        user.setPassword("tom888");        userDao.updateById(user);  }}
四十一 增删查改分页 Java开发学习----MyBatisPlus标准数据层开发

文章插图
说明:修改的时候 , 只修改实体对象中有值的字段 。
五、根据ID查询在进行根据ID查询之前,我们可以分析下根据ID查询的方法:
T selectById (Serializable id)
  • Serializable:参数类型,主键ID的值
  • T:根据ID查询只会返回一条数据
在测试类中进行新增操作:
@SpringBootTestclass Mybatisplus01QuickstartApplicationTests {?    @Autowired    private UserDao userDao;        @Test    void testGetById() {        User user = userDao.selectById(2L);        System.out.println(user);  }}六、查询所有在进行查询所有之前 , 我们可以分析下查询所有的方法:
List<T> selectList(Wrapper<T> queryWrapper)
  • Wrapper:用来构建条件查询的条件 , 目前我们没有可直接传为Null
  • List<T>:因为查询的是所有,所以返回的数据是一个集合
在测试类中进行新增操作:

推荐阅读