MyBatis-Plus笔记

MyBatis-Plus笔记

1. MP入门

1.1 MP第一个案例

第一步:导入依赖(MP、Lombok、MySQL)。

第二步:配置 application.yml 数据库四项。

第三步:编写业务逻辑类:POJO 类、Mapper 接口 extends BaseMapper。

第四步:通常是 service 注入 Mapper 接口的代理类对象。

1.2 MP常用注解

@TableName(value=“表名”):类名和表名不一致时使用,value 值为表名。

@TableId(Value=“主键”,type=IdType.XXX):主键 id,value 值为数据库表中的id值。type 为主键生成策略。

@TableField(value = “”, exit=fasle, fill = FieldFill.INSERT):exit 为 fasle 时,表示数据库表中没有该字段,fill 属性表示新增或修改自动赋值。

@TableLogic:逻辑删除。

@version:版本号,先查询后修改,版本号自动递增,不需要手动修改。

1.3 下划线转驼峰式命名

下划线转驼峰式命名,查询时有影响,返回时的映射也有影响

默认开启,关闭操作如下:

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false #关闭下划线转驼峰式命名互转

1.4 查询SQL语句日志的两种方式

  • Spring 自带的方式

    # 第一种方案:全局debug
    #logging:
    #  level:
    #    root: debug
    
    # 第二种方案:局部目标文件debug
    logging:
      level:
        com.xxx.mp.mapper: debug
    
  • 使用 MP 提供的方式

    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

2. MP的增删改查

2.1 增

主键生成

5种常见的主键生成策略:

  1. NONE(1):默认的 mp 主键生成策略,mybatis-plus 会使用雪花算法(snowflake)生成19位的数值类型递增的唯一标识符。[MP推荐]
  2. INPUT(2):要让用户自己输入主键。
  3. AUTO(0):表示使用数据库表的自增主键,要求:表的列是数值类型,列是递增的。
  4. ASSIGN_ID(3):表示如果用户自己输入例如 id,就用用户自己输入的id作为主键,如果没有指定,就用默认的mp主键生成策略。
  5. ASSIGN_UUID(4):表示如果用户自己输入例如 UUID,就用用户自己输入的 UUID 作为主键,如果没有指定,就用mp帮我们生成 UUID 作为主键。

2.2 删

根据 id、ids、map、wrapper 删除

2.3 改

直接修改:MP 支持直接通过 id 修改,updateById()。

自动填充两步走:

1. 在自动填充的属性上添加 @TableField 注解,指定 fill=fieldType.INSERT,指定填充时机。
1. 自定义类实现 MetaObjectHandler 接口,新增 、修改 this.setFieldValByName(),指定填充什么值。

逻辑删除:

  1. 局部配置:@TableLogic
  2. 全局配置:
    # 逻辑删除,全局配置
    mybatis-plus:
      global-config:
        db-config:
          logic-delete-value: 1 # 逻辑已删除值(默认为 1)
          logic-not-delete-value: 0  # 逻辑未删除值(默认为 0)
          logic-delete-field: deleted #全局逻辑删除的实体字段名(since 3.3.0,配置后可以不配置@deleted)
    

乐观锁三步走:实现高性能并发又可保证数据的安全性

  1. @Version
  2. 乐观锁插件
  3. 先查询出来、修改、写回去

2.4 查

普通查询:selectById()、selectBatchIds()、selectList()、selectByMap()、selectOne()、selectCount()等。

分页查询:selectPage(),分页查询参数对象与查询后接受的对象底层是同一个对象,所以不用接受,直接使用参数对象。

2.5 Wrapper查询

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

3. 补充

3.1 持久层自定义方法和SQL

3.2 遍历集合的几种方式

  1. 增强 for
  2. 普通 for
  3. 迭代器
  4. stream 流

3.3 自定义 service 层

  1. service 接口 继承 IService 接口。
  2. service 接口实现类继承 service 接口并继承 ServiceImpl 类,第一个参数为对应的 Mapper,第二参数为 POJO 类。【实现类记得注入容器】。
  3. xxxService 调用 xxxMapper 可以直接调用 baseMapper。调用其他 Mapper 需要手动注入。

3.4 时区问题

MySQL8.0 数据库配置

spring:
  datasource:
    username: xxx
    password: xxx
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxx:3306/xxx?serverTimezone=Asia/Shanghai
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值