【MyBatis-Plus】CRUD 操作

博客主页:准Java全栈开发工程师
00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小、觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为了去掌控球体的转向,而是当有人恶意掌控时,努力保护好家人和自己。

CRUD

  • 一、标准的 CRUD 操作
      • 1、测试 insert 新增方法
      • 2、测试 deleteById 删除方法
      • 3、测试 updateById 更新修改方法
      • 4、测试 selectById 按 ID 查询方法
      • 5、测试 selectList 查询全部方法
  • 二、分页查询
      • 1、配置分页拦截器
      • 2、测试 selectPage 分页查询方法
      • 3、添加日志记录

一、标准的 CRUD 操作

  • 在没有 MyBatis-Plus 之前,我们定义的数据访问层中都会自定义许多增删改查方法,但是有了 MyBatis-Plus 之后,有许多操作我们无需再自己定义。

【MyBatis-Plus】CRUD 操作_第1张图片

  • 接下来,我们测试使用一下 MyBatis-Plus 给我们提供好的方法,在我们自定义的 UserMapper 中只需要继承 BaseMapper 即可,其他无需做任何事情。
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  • 在测试之前,我们先看一眼现在数据库 user 表中的数据情况,方便之后判断相应的操作是否执行成功。

【MyBatis-Plus】CRUD 操作_第2张图片

1、测试 insert 新增方法

    @Test
    void testInsert(){
        User u = new User();
        u.setUsername("准Java全栈开发工程师");
        u.setAge(50);
        u.setPassword("2598746");
        int insert = userMapper.insert(u);
        System.out.println(insert);
    }
  • id 设置为自增,所以我们可以不自己指定,但是自动提供的 id 为 long 类型,我们在定义表结构以及实体类时需要保持一致。

【MyBatis-Plus】CRUD 操作_第3张图片

  • 新数据已经成功添加,对于为什么自动生成的 ID 是这样子的,我们之后再谈,现在主要是为了测试相关方法,不要喧宾夺主。

2、测试 deleteById 删除方法

    @Test
    void testDeleteById(){
        int i = userMapper.deleteById(1L);
        System.out.println(i);
    }
  • 删除 id 为 1 的数据,只需在方法里传入 id 编号即可,注意,因为将 id 设置为了 long 类型,所以 1 后面跟上 L 表示为 long 型数据。

在这里插入图片描述

3、测试 updateById 更新修改方法

    @Test
    void testUpdateById(){
        User user = new User();
        user.setAge(44);
        user.setId(1540228668142657537L);
        userMapper.updateById(user);
    }
  • 在我们自定义的更新方法中,通常情况下我们不光要传入需要修改的信息,还需要将未修改的信息再传一遍,这是因为如果我们不再次传入,会导致更新之后未修改的信息值变为了 null 值,或者在修改之前进行判断,只修改需要更改的字段,其他字段不予更改。
  • 但是 MyBatis-Plus 提供的更新方法中,我们只需要将需要更改的字段传入,并且将 id 设置为待修改记录的 id ,在进行修改操作时,只会对传入的字段信息进行更新,未传入的字段信息不予理会,非常的方便。

在这里插入图片描述

  • 通过结果可知,不光修改了年龄值,其他的信息也并没有因为没传值而被置为 null。

4、测试 selectById 按 ID 查询方法

    @Test
    void testSelectById() {
        User user = userMapper.selectById(4L);
        System.out.println(user);
    }
  • 将所要查询的 id 号传入就能够查询相应的数据。
    在这里插入图片描述

5、测试 selectList 查询全部方法

    @Test
    void testSelectList(){
        List<User> users = userMapper.selectList(null);
        System.out.println(users);
    }
  • 传入 null 值是因为我们还未涉及到 queryWrapper ,直接将全部信息查询出来即可。

在这里插入图片描述

二、分页查询

1、配置分页拦截器

  • 如果想要使用 MyBatis-Plus 提供的分页对象及方法,我们需要设置一个分页拦截器。
@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        // 先创建 MP 的拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        // 再将分页拦截器添加进去
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        // 如果需要其他拦截器,也可以添加
        return mpInterceptor;
    }
}

2、测试 selectPage 分页查询方法

    @Test
    void testSelectPage(){
        // 创建 IPage 对象,设置分页参数,第一个参数为当前页码,第二个参数为每页多少条数据
        IPage<User> page = new Page<>(1, 2);
        // 执行分页查询,先不使用条件查询,条件查询的内容之后介绍
        userMapper.selectPage(page,null);
        // 演示相应的方法
        System.out.println("当前页码:" + page.getCurrent());
        System.out.println("每页数据条目:" + page.getSize());
        System.out.println("共多少页:" + page.getPages());
        System.out.println("共多少条数据:" + page.getTotal());
        System.out.println("以集合的形式返回当前页中的数据" + page.getRecords());
    }
  • Page 分页对象中存储了许多内容,可以通过调用相应的方法获得数据,上述展示了一些常用的数据,如:获取当前页码,每页的数据条目,总页码,数据总数等等,感兴趣的可以深入了解以下 Page 类。
  • 此时再执行测试方法就能够查询出想要的结果。
    在这里插入图片描述

3、添加日志记录

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl   # 打印SQL日志到工作台
  • 配置了日志记录后,我们再次执行 SQL 方法时,就可以看到 SQL 的相关信息。

【MyBatis-Plus】CRUD 操作_第4张图片

  • 当程序出现 bug 时,就可以将日志信息打印出来,更有利于我们找出问题所在。

  • 除此之外,还有 max 函数,min 函数,avg 函数等,可以根据自己的需要测试使用。

以上就是文章的全部内容啦,诸佬如果有任何建议都可以提哦。
创作不易,如果觉得对您有帮助的话,欢迎关注✨点赞收藏哦。

你可能感兴趣的:(MyBatis-Plus,mybatis,java,mysql,mybatis-plus)