首页 > 其他分享 >Mybatis Plus

Mybatis Plus

时间:2023-05-31 20:44:40浏览次数:31  
标签:userDao 删除 查询 Plus User Mybatis new id

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 代码生成器(了解)

标签:userDao,删除,查询,Plus,User,Mybatis,new,id
From: https://www.cnblogs.com/llg-/p/17446913.html

相关文章

  • 使用OnePlus 6T(一加6T)刷入 Kali NetHunter的操作总结
    前景概述:看到网上有人用手机进行BadUSB攻击,自己也幻想了一下在手机中使用KaliLinux的场景,看到Kali官方提供的有移动端的设备Nethunter,于是我就筹划这准备刷入这个系统。想要刷入NetHunter,并不是非常简单的事情,但是如果你有刷机基础的话,也可以是很简单的步骤。我是一个小白,一......
  • Mybatis-plus关于代码生成器的使用
    1、添加依赖 2、在test包下创建一个CodeGet类,实现生成代码的功能。注意:全局配置、数据源配置一定要和自己的电脑配置一致! 3、执行CodeGet类中的main方法。打印台有如下图提示字样,即自动生成成功。 4、对比两张图。在wechat文件夹下有controller、entity、mapper、s......
  • 创龙教仪TL6748-PlusTEB教学实验箱实验操作教程:2-2 LED灯控制实验
    2-2LED灯控制实验(点击查看完整视频)1、实验目的本次视频教程是基于创龙教仪TL6748-PlusTEB教学实验箱完成的。本节视频的目的是学习基于StarterWare开发环境配置GPIO管脚的方法和原理,并实现StarterWare开发环境下的LED灯控制。2、实验原理StarterWareStarterWare是一个免费的软件开......
  • Mybatis使用实例
    当涉及到演示如何使用MyBatis时,以下是一个简单的示例代码。这个示例代码将展示如何配置MyBatis,如何定义映射文件以及如何执行数据库操作。首先,你需要准备以下环境:JavaDevelopmentKit(JDK)MyBatis框架的JAR文件数据库连接驱动的JAR文件(根据你使用的数据库类型)接下来,按照......
  • 使用mybatis完成CRUD
    1. 什么是CRUD    17C: Create 增R: Retrieve 查(检索)U: Update 改D: Delete 删2. insert   17<insertid="insertCar">insertintot_car(id,car_num,brand,guide_price,produce_time,car_type)values(null,'1003','丰田霸道',30.0,'2000......
  • 黑马Vue3 + ElementPlus + Pinia 小兔鲜电商项目2023版
    黑马Vue3+ElementPlus+Pinia小兔鲜电商项目2023版download:3w51xuebccomElementPlus:优雅高效的Vue组件库随着Vue.js在前端开发中的广泛应用,越来越多的UI组件库涌现出来。而其中一款备受瞩目的组件库就是ElementPlus。作为一款基于Vue3.0的组件库,ElementPlus不仅完美地继承了......
  • 最全面的Mybatis面试八股文
    Mybatis是什么?MyBatis框架是一个开源的数据持久层框架。它的内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配......
  • mybatis配置多数据源
    yml中配置mybatis的日志输出信息mybatis:#springboot集成mybatis的方式打印sqlconfiguration:log-impl:org.apache.ibatis.logging.stdout.StdOutImplmaven引入相关的配置<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>my......
  • 开发手记:MyBatis的mapper文件的中SQL符号转义
    字符转义问题在MaBatis的XML文件中编写SQL语句时,<符号会出现转义问题,例如:<!--查询指定月份内的订单--><selectid="queryInRange"resultType="OrderEntity"> SELECT*FROMorder WHEREcreate_time>DATE_SUB(NOW(),INTERVAL#{month}MONTH) ANDuser_i......
  • Mybatis-plus 简单使用
    Mybatis-plus特点介绍:1、无侵入:只做增强不做改变,引入它不会对现有工程产生影响2、强大的CRUD操作:内置通用Mapper、Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。3、支持Lambda形式调用:通过Lambda表达式,方便编......