苞米豆 mybatisplus annotation常用注解

一、@TableName(value = “if_user”) 或 @TableName(“if_user”)

@TableName注解主要是实现实体类型和数据库中的表实现映射。

二、@TableId

默认情况下数据库的id列使用的是基于雪花算法的策略生成。

背景

数据库的扩展方式主要包括:业务分库、主从复制、数据库分表。

2.1、垂直分表

垂直分表适合将表中某些不常用且占了大量空间的列拆分出去。
例如:一张用户信息表,条件查询常用的年龄、性别 为一张表,另开一张表存储用户其他详细信息,user 用户表、user_info 用户详细信息表,表于表之间为一对一,id相同

2.2、水平分表

适合表数据量较大的表,有的公司规定5000万(参考)就必须进行分表。
水平分表相比垂直分表,复杂性更高,例如id:

2.2.1 主键自增

复杂点:分段大小的选取。
缺点:分布不均匀。

2.2.2 Hash

复杂点:初始表数量的确定。
缺点:扩充新的表很麻烦,所有数据都要重分布。

2.2.3 雪花算法

能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

- 核心思想:

  1. 长度共64bit(一个long型)。
  2. 首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。
  3. 41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。
  4. 10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。
  5. 12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。
    优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。
    在这里插入图片描述

三、指定主键列

原因:因为mybatis-plus默认认为id是主键列,其他名字的属性mybatis-plus无法默认自动填充
解决方案:为主键列添加 @TableId 注解
在这里插入图片描述

四、type属性

@TableId(type = IdType.ASSIGN_UUID) 常见以下三种:

  1. IdType.ASSIGN_ID:使用基于雪花算法的策略生成数据id
  2. IdType.AUTO:使用数据库的自增策略
  3. IdType.ASSIGN_UUID:分配UUID
    在这里插入图片描述

五、@TableField

  1. 表示子段映射的数据库列名映射:@TableField(“数据库列名”)
  2. 表示bean字段和数据库无关联:@TableField(exist = false)
  3. fill属性添加:@TableField(fill = FieldFill.INSERT)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小梦ITSuper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值