随笔 - 19  文章 - 0  评论 - 0  阅读 - 3564

Mybatis Plus

MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率

1. MyBatisPlus简介

  1. 入门案例
  2. MyBatisPlus概述

2. 标准数据层开发

  1. 标准数据层CRUD功能
  2. 分页功能

3. DQL控制

  1. 条件查询方式
  2. 查询投影
  3. 查询条件设定
  4. 字段映射与表名映射

4. DML控制

  1. id自增策略控制(Insert)
  2. 多记录操作(Delete、Select)
  3. 逻辑删除(Delete/Update)
  4. 乐观锁(Update)

5. 快速开发

  1. 代码生成器


1-1 入门案例

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

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

  3. 手动添加mp起步依赖

  <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
  1. 设置Jdbc参数(application.yml)
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
    username: root
    password: 123456
  1. 制作实体类与表结构(类名与表名对应,属性名与字段名对应)
  2. 定义数据接口,继承BaseMapper
  3. 测试类中注入dao接口,测试功能


2-1 标准数据层CRUD功能

  • Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2-2 分页功能

  • MP分页查询功能
  1. 设置分页拦截器作为Spring管理的bean

  2. 执行分页查询

  • 开启日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


3-1 条件查询方式

  1. 条件查询——设置查询条件
  QueryWrapper<User> qw = new QueryWrapper<User>();
        //查询年龄大于等于18岁,小于65岁的用户
        qw.lambda().lt(User::getAge,65).ge(User::getAge,18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);
  1. 条件查询——组合查询条件

  1. 条件查询——null值处理

3-2 查询投影

3-3 查询条件设定

  • 范围匹配(> 、 = 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)

3-4 字段映射与表名映射


4-1 id生成策略控制

  • 参数解释
    AUTO(0):使用数据库id自增策略控制id生成
    NONE(1):不设置id生成策略
    INPUT(2):用户手工输入id
    ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)
    ASSIGN_UUID(4):以UUID生成算法作为id生成策略

  • 全局配置

mybatis-plus:
  global-config:
    banner: false
    db-config:
      id-type: assign_id
      table-prefix: tbl_

4-2 多记录操作

  • 按照主键删除多条记录
  List<Long> ids= Arrays.asList(new Long[]{2,3});
  userDao.deleteBatchIds(ids);
  • 根据主键查询多条记录
List<Long> ids= Arrays.asList(new Long[]{2,3});
  List<User> userList = userDao.selectBatchIds(ids);

4-3 逻辑删除

  • 删除操作业务问题:业务数据从数据库中丢弃
  • 逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,数据保留在数据库中
    不要直接删除数据库记录,用新的字段标记是否处于删除状态
  1. 数据库表中添加逻辑删除标记字段

  2. 实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

  public class User {
  private Long id;
  @TableLogic
  private Integer deleted;    
}
  1. 配置逻辑删除字面值
db-config:
      id-type: assign_id
      table-prefix: tbl_
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

4-4 乐观锁

  1. 数据库表中添加锁标记字段
  2. 实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

  public class User {
  private Long id;
  @Version
  private Integer version;
}
  1. 配置乐观锁拦截器实现锁机制对应的动态SQL语句拼装
 @Configuration
        public class MpConfig {
            @Bean
            public MybatisPlusInterceptor mpInterceptor() {
                MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
                mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
                return mpInterceptor;

            }
        }
  1. 使用乐观锁机制在修改前必须先获取到对应数据的verion方可正常进行
     @Test
        void testUpdate () {
            //先查询数据,获取到version数据
            User user = userDao.selectById(1L);
            //执行数据修改操作
            user.setName("Tom and Jerry");
            userDao.updateById(user);
        }


5-1 代码生成器(了解)

posted on   云往前面飘  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示