MyBatisPlus

MyBatisPlus,第1张

目录
  • 概述
  • 搭建
  • Pojo类
  • 雪花算法
      • 垂直拆分
      • 水平拆分
      • 雪花算法
  • 自动生成语句
      • 插入
      • 删除
      • 修改
      • 查询
  • Service CRUD
  • 条件构造器
      • queryWrapper
      • UpdateWrapper
  • 分页插件
  • MyBatisPlus乐观锁

概述

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

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

引入jar坐标

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.5.1version>
dependency>

<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
dependency>

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druidartifactId>
    <version>1.2.8version>
dependency>

<dependency>
    <groupId>org.projectlombokgroupId>
    <artifactId>lombokartifactId>
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());
    

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/720434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存