MybatisPlus 2 标准数据层开发

时间:2022-10-22 07:54:43

MybatisPlus

【黑马程序员2022新版SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术】

2 标准数据层开发

重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。

2.1 标准CRUD 使用

MybatisPlus 2 标准数据层开发

2.2 新增

【新增的方法】

 int insert (T t)
  • T:泛型,新增用来保存新增数据
  • int:返回值,新增成功后返回1,没有新增成功返回的是0

【编写测试类】

//测试新增
@Test
void testSave(){
    User user = new User();
    user.setName("dingjiaxiong");
    user.setPassword("200039");
    user.setAge(22);
    user.setTel("18888888888");
    userDao.insert(user);
}

运行测试,查看数据库

MybatisPlus 2 标准数据层开发

主键的问题,看到后面

2.3 删除

【删除的方法】

int deleteById (Serializable id)

Serializable:参数类型

  • 【参数类型为什么是个序列化类】

    MybatisPlus 2 标准数据层开发

    可以看到:

    • String和Number是Serializable的子类,
    • Number又是Float,Double,Integer等类的父类,
    • 能作为主键的数据类型都已经是Serializable的子类,
    • MP使用Serializable作为参数类型,就好比我们可以用Object接收任何数据类型一样。
    • int:返回值类型,数据删除成功返回1,未删除数据返回0。

【编写测试】

//测试删除
@Test
void testDelete(){
    userDao.deleteById(1573294676480020482L);
}

运行测试,查看数据库

MybatisPlus 2 标准数据层开发

2.4 修改

【修改的方法】

int updateById(T t);
  • T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值
  • int:返回值,修改成功后返回1,未修改数据返回0

【测试修改】

//测试修改
@Test
void testUpdate(){
    User user = new User();
    user.setId(1L);
    user.setName("Tom888");
    user.setPassword("tom888");
    userDao.updateById(user);
}

运行测试,查看数据库

MybatisPlus 2 标准数据层开发

说明:修改的时候,只修改实体对象中有值的字段

2.5 根据ID 查询

【根据ID 查询的方法】

T selectById (Serializable id)
  • Serializable:参数类型,主键ID的值
  • T:根据ID查询只会返回一条数据

【测试按照ID 查询】

//按ID查询
@Test
void testGetById(){
    User user = userDao.selectById(2L);
    System.out.println(user);
}

运行测试方法

MybatisPlus 2 标准数据层开发

2.6 查询所有

【查询所有的方法】

List<T> selectList(Wrapper<T> queryWrapper)
  • Wrapper:用来构建条件查询的条件,目前没有可直接传为Null
  • List:因为查询的是所有,所以返回的数据是一个集合

【测试查询所有】

//查询所有
@Test
void testGetAll(){
    List<User> userList = userDao.selectList(null);
    System.out.println(userList);
}

运行测试方法

MybatisPlus 2 标准数据层开发

2.7 Lombok

现在的实体类中的东西:

  • 私有属性
  • setter、getter 方法
  • toString 方法
  • 构造函数

如何简化?

【概念】

Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发。

【使用步骤】

① 添加lombok依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

MybatisPlus 2 标准数据层开发

注意:版本可以不用写,因为SpringBoot中已经管理了lombok的版本。

② 安装Lombok 插件

MybatisPlus 2 标准数据层开发

③ 模型类上添加注解

Lombok常见的注解有:

  • @Setter:为模型类的属性提供setter方法
  • @Getter:为模型类的属性提供getter方法
  • @ToString:为模型类的属性提供toString方法
  • @EqualsAndHashCode:为模型类的属性提供equals和hashcode方法
  • @Data:是个组合注解,包含上面所有注解的功能【常用】
  • @NoArgsConstructor:提供一个无参构造函数【常用】
  • @AllArgsConstructor:提供一个包含所有参数的构造函数【常用】

当然不止这些

package com.dingjiaxiong.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * ClassName: User
 * date: 2022/9/23 20:40
 *
 * @author DingJiaxiong
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private String password;
    private Integer age;
    private String tel;
    
}

如果想要一个两个参数的构造方法,也可以自己加,这种方式是被允许的

MybatisPlus 2 标准数据层开发

2.8 分页功能

【分页查询使用的方法】

 IPage<T> selectPage(IPage<T> page, Wrapper<T> queryWrapper)
  • IPage:用来构建分页查询条件
  • Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null
  • IPage:返回值,构建分页条件和方法的返回值都是IPage

IPage是一个接口,需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+h,会找到其有一个实现类为Page。

【使用步骤】

① 调用方法传入参数获取返回值

//分页查询
@Test
void testSelectPage(){
    //1 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数
    IPage<User> page = new Page<>(1,3);
    //执行分页查询
    userDao.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());
}

② 设置分页拦截器

拦截器MP已经提供好了,只需要将其配置成Spring管理的bean对象即可。

package com.dingjiaxiong.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ClassName: MybatisPlusConfig
 * date: 2022/9/23 21:18
 *
 * @author DingJiaxiong
 */

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1 创建MybatisPlusInterceptor拦截器对象
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //2 添加分页拦截器
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mybatisPlusInterceptor;
    }

}

MP官方文档https://baomidou.com/pages/2976a3/#spring-boot

MybatisPlus 2 标准数据层开发

③ 运行测试方法

MybatisPlus 2 标准数据层开发

如果想查看MP执行的SQL 语句,可以修改application.yml配置文件

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

MybatisPlus 2 标准数据层开发

打开日志后,就可以在控制台打印出对应的SQL语句

开启日志功能性能就会受到影响

MybatisPlus 2 标准数据层开发