MyBatisPlus02_MyBatisPlus的常用注解
MyBatisPlus02_MyBatisPlus的常用注解@TableName用于映射数据库的表名@TableId设置主键映射,属性type设置主键的生成策略共五种生成策略:AUTO数据库自增,开发者手动的赋值是无效的NONE雪花算法生成随机数(MP的默认生成策略),注:integer类型会因长度不够而无法存储该随机数INPUT需要开发者手动赋值,如不赋值,数据库会采用自增方式设置主键ASSIG
MyBatisPlus02_MyBatisPlus的常用注解
@TableName
用于映射数据库的表名
@TableId
设置主键映射,属性type设置主键的生成策略
共五种生成策略:
AUTO 数据库自增,开发者手动的赋值是无效的
NONE 雪花算法生成随机数(MP的默认生成策略),注:integer类型会因长度不够而无法存储该随机数
INPUT 需要开发者手动赋值,如不赋值,数据库会采用自增方式设置主键
ASSIGN_ID MP自动通过雪花算法赋值,和默认NONE是一样的
ASSIGN_UUID 自动生成随机字符串进行赋值,要求主键必须为String类型,且不能设置自增
@TableField
设置非主键映射。
属性exist表示该字段是否是数据库字段,若为false则查询数据库时不会查询该字段;
属性select表示查询数据库时是否查询该字段;
属性fill表示是否自动填充(将对象存入数据库时,由MybatisPlus为该字段赋值),需配合自动填充处理器使用,当监听到 INSERT 操作时自动调用 insertFill 方法,监听到 UPDATE 操作时自动调用 updateFill 方法。
@Version
标记乐观锁。通过version字段来保证数据的安全性。保证同时只有一个线程才能修改数据。需要配置乐观锁拦截器。
线程1:update … set version = 2 where version =1
线程2:update … set version = 2 where version =1
@EnumValue
通用枚举类注解。将数据库字段映射成实体类的枚举类型成员变量。
注:需要在配置文件中配置枚举包扫描才能生效!
@TableLogic
映射逻辑删除。步骤如下:
1. 数据库添加 deleted 字段
2. 实体类添加 @TableLogic 注解
3. 在application.yml中添加逻辑删除映射的配置
用法示例:
@Data
@TableName("user")
public class User{
@TableId(value = "id",type = IdType.INPUT)
private Integer id;
@TableField("name")
private String name;
@TableField(value = "age", select = false)
private Integer age;
@TableField(exist = false)
private String gender;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Version
private Integer version;
@TableLogic
private Integer deleted;
}
- 自动填充处理器
package com.blu.handler;
import java.util.Date;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler{
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
- 配置乐观锁拦截器
package com.blu.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
@Configuration
public class MyBatisPlusConfig {
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}
- StatusEnum 枚举类
package com.blu.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum StatusEnum {
WORK(1, "工作中"),
REST(0, "休息中");
StatusEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
@EnumValue
private Integer code;
private String msg;
}
- 枚举包扫描的配置
mybatis-plus:
type-enums-package: com.southwind.mybatisplus.enums
- 逻辑删除映射的配置
mybatis-plus:
global-config:
db-config:
logic-not-delete-value: 0 #不删除为0
logic-delete-value: 1 #删除为1
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐
所有评论(0)