基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用


在这里插入图片描述

个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaEE
操作系统

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


MyBatisPlus基础

  • 一、入门案例
    • 1.1 创建新模块,选择Spring初始化,并配置模块相关基础信息
    • 1.2 选择当前模块需要使用的技术集(仅保留JDBC)
    • 1.3 手动添加mp起步依赖
    • 1.4 设置Jdbc参数(application.yml)
    • 1.5 制作实体类与表结构(类名与表名对应,属性名与字段名对应)
    • 1.6 定义数据接口,继承BaseMapper
    • 1.7 测试类中注入dao接口,测试功能
    • 1.8 运行结果
  • 二、MyBatisPlus概述
  • 三、标准数据层开发
    • 3.1 标准数据层CRUD功能
    • 3.2 新增
    • 3.3 删除
    • 3.4 修改
    • 3.5 根据id查询
    • 3.6 lombok工具
  • 四、 分页功能
    • 4.1 设置分页拦截器作为Spring管理的bean
    • 4.2 执行分页查询
    • 4.3 开启日志(观察底层SQL语句)

一、入门案例

  • MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率
  • 官网:https://mybatis.plus/
  • 开发方式:
    • 基于MyBatis使用MyBatisPlus
    • 基于Spring使用MyBatisPlus
    • 基于SpringBoot使用MyBatisPlus

1.1 创建新模块,选择Spring初始化,并配置模块相关基础信息

基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第1张图片


基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第2张图片


1.2 选择当前模块需要使用的技术集(仅保留JDBC)

基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第3张图片


基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第4张图片


1.3 手动添加mp起步依赖

<dependency>
     <groupId>com.baomidougroupId>
     <artifactId>mybatis-plus-boot-starterartifactId>
     <version>3.4.1version>
dependency>
  • 由于mp并未被收录到idea的系统内置配置,无法直接选择加入

1.4 设置Jdbc参数(application.yml)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/mybatis?serTimezone=UTC
    username: root
    password: 123456
  • 如果使用Druid数据源,需要导入对应的坐标

1.5 制作实体类与表结构(类名与表名对应,属性名与字段名对应)

sql字段:
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第5张图片
java属性:
基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第6张图片

1.6 定义数据接口,继承BaseMapper

@Mapper
public interface UserDao extends BaseMapper<User> {
}

1.7 测试类中注入dao接口,测试功能

@SpringBootTest
class MybatisplusApplicationTests {

	@Autowired
	private UserDao userDao;

	@Test
	void testGetAll() {
		List<User> users = userDao.selectList(null);
		System.out.println(users);
	}
}

1.8 运行结果


在这里插入图片描述


二、MyBatisPlus概述

MyBatisPlus特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
    支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

三、标准数据层开发

3.1 标准数据层CRUD功能

功能 自定义接口 MP接口
新增 boolean save(T t) int insert(T t)
删除 boolean delete(int id) int deleteById(Serializable id)
修改 boolean update(T t) int updateById(T t)
根据id查询 T getById(int id) T selectById(Serializable id)
查询全部 List getAll() List selectList()
分页查询 PageInfo getAll(int page,int size) IPage selectPage(IPage page)
按条件查询 List getAll(Condition condition) IPage selectPage(Wrapper queryWrapper)

3.2 新增

@Test
	void testSave() {
		User user = new User();
		user.setId(5);
		user.setUsername("小夏");
		user.setPassword("123");
		user.setGender("女");
		user.setAddr("北京");
		userDao.insert(user);
	}

3.3 删除

@Test
	void testDelete() {
		userDao.deleteById(5);
	}

3.4 修改

@Test
	void testUpdate() {
		User user = new User();
		user.setId(1);
		user.setUsername("张三");
		userDao.updateById(user);
	}

3.5 根据id查询

@Test
	void testGetById() {
		User user = userDao.selectById(2);
		System.out.println(user);
	}

3.6 lombok工具

  • Lombok是一个Java类库,提供了一组注解,简化POJO实体类开发
<dependency>
     <groupId>org.projectlombokgroupId>
     <artifactId>lombokartifactId>
     <scope>providedscope>
dependency>
  • 常用注解:@Data
@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;
}
  • 为当前实体类在编译期设置对应的get/test方法,无参/无参构造方法,toString方法,hashCode方法,equals方法等

四、 分页功能

4.1 设置分页拦截器作为Spring管理的bean

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        //1.定义Mp拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //2.添加具体的拦截器
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return mpInterceptor;
    }
}

4.2 执行分页查询

@Test
	void testGetByPage() {
		IPage page = new Page(1,4);
		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());
	}

4.3 开启日志(观察底层SQL语句)

# 开启mp的日志(输出到控制台)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第7张图片


基于SpringBoot使用MyBatisPlus,MyBatisPlus标准数据层开发(CRUD)、MyBatisPlus分页功能的使用_第8张图片


你可能感兴趣的:(#,JavaEE,mybatis,java,springboot)