IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MyBatisPlus -> 正文阅读

[大数据]MyBatisPlus

概述

MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速的实现对单表的CRUD、批量、逻辑删除、分页等操作。

在这里插入图片描述

  1. 扫描pojo实体类
  2. 通过反射技术将实体类中的属性抽取,分析数据库表和实体类映射关系,实现表与表之间,属性与属性之间映射
  3. 根据调用的方法生成相对应的sql语句
  4. 将生成的语句注入到mybatis容器中从而实现功能

搭建

引入jar坐标

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.8</version>
</dependency>

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

修改设置

server:
  port: 8099
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1/mybatis_plus?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 152475
    type: com.alibaba.druid.pool.DruidDataSource
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Pojo类

  1. lombok:简化实体类开发
    只需在实体类上添加@Data,就可以自动生成
    构造方法、get()、set()、equals()、canEqual()、hashCode()、toString()
  2. @Accessors(chain = true),就可以使用链式set值
  3. @TableName("t_user"):映射数据库中的表名
    或者使用全局配置global-config:db-config:table-prefix: t_
  4. @TableId:表示主键字段映射
  5. @TableId(value = "uid"):指定作为主键的字段
  6. @TableId(value = "uid", type = IdType.AUTO):id生成策略,默认雪花算法,设置主键自增,需要数据库同时设置;或者全局设置 global-config:db-config:id-type: auto
  7. 字段默认驼峰映射,@TableField("user_name")设置对应的表中字段名
  8. @TableLogic:被标记的属性字段为逻辑删除属性字段;删除时改变此字段

雪花算法

在这里插入图片描述

垂直拆分

垂直分表适合将表中某些不常用且占了大量空间的列拆分出去

水平拆分

水平分表适合表行数特别大的表

  • 主键自增:分段大小选取困难;分段不均匀
  • hash取模:分布均匀;但表扩充困难,需要重新分布所有数据
  • 雪花算法

雪花算法

能保证不同表的主键不重复性相同表的主键有序性

整个分布式系统内ID不重复,效率高
在这里插入图片描述

自动生成语句

需要将mapper接口继承BaseMapper<实体类>
在这里插入图片描述

插入

在这里插入图片描述
可以自动使用雪花算法生成主键id
在这里插入图片描述

删除

通过id删除:int类型,所以加L

条件删除
在这里插入图片描述
通过多个id批量删除
在这里插入图片描述

修改

通过id修改,只修改set()的属性
在这里插入图片描述
在这里插入图片描述

查询

在这里插入图片描述

如果要自定义方法,如myBatis一样

Service CRUD

在service层调用方法,需要既可以使用通用功能,还可以实现自己定义的接口
在这里插入图片描述

  1. 创建IUserService.java接口
    在这里插入图片描述
  2. 创建UserServiceImpl实现类
    在这里插入图片描述
    批量添加
    在这里插入图片描述

条件构造器

queryWrapper

在这里插入图片描述
在这里插入图片描述
排序
在这里插入图片描述

UpdateWrapper

在这里插入图片描述
在这里插入图片描述
优先级设置
在这里插入图片描述
部分字段查询
在这里插入图片描述
子查询
在这里插入图片描述
给查询条件加条件(下面为简写)
在这里插入图片描述
()
在这里插入图片描述
在这里插入图片描述

分页插件

配置

@Configuration
public class MyBatisPlusConfig {
    /**
     * 分页配置:拦截器
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //数据库类型,每个数据库原理分页不一样
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

在这里插入图片描述
自定义sql实现分页

  1. 定义dao
  2. 写sql在这里插入图片描述
  3. 查询
    在这里插入图片描述

MyBatisPlus乐观锁

innodb隔离级别默认为rr自带乐观锁;

  1. @Version private Integer version;
    标识乐观锁版本号字段;数据库也加上这个字段
  2. 添加乐观锁插件
    //乐观锁插件
    interceptor.addInnerInterceptor(new    OptimisticLockerInnerInterceptor());
    
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:53:19  更:2022-04-23 10:56:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:44:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码