快捷搜索:  汽车  科技

mybatis-plus快速入门:MyBatis-Plus常用注解

mybatis-plus快速入门:MyBatis-Plus常用注解MP set 主键,雪花算法实现NONE描述AUTO数据库自增

1、@TableName

@TableName

用法:映射数据库的表名,如果数据库表名与实体类名不一致,用@TableName来映射。

package com.example.mybatisplus.entiy; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("mp") //表名 public class User { private String id; private String name; private String age; }

mybatis-plus快速入门:MyBatis-Plus常用注解(1)

当数据库表名与实体类名不一致,报错如下:

mybatis-plus快速入门:MyBatis-Plus常用注解(2)

2、@TableId

@TableId

设置主键映射1)value
  • value 映射主键字段名

mybatis-plus快速入门:MyBatis-Plus常用注解(3)

2)type
  • type 设置主键类型,主键的生成策略

AUTO(0) NONE(1) INPUT(2) ASSIGN_ID(3) ASSIGN_UUID(4) /** @deprecated */ @Deprecated #已不推荐 ID_WORKER(3) /** @deprecated */ @Deprecated #已不推荐 ID_WORKER_STR(3) /** @deprecated */ @Deprecated #已不推荐 UUID(4);

描述

AUTO

数据库自增

NONE

MP set 主键,雪花算法实现

INPUT

需要开发者手动赋值

ASSIGN_ID

MP 分配 ID,Long、Integer、String

ASSIGN_UUID

分配 UUID,Strinig

  • INPUT 如果开发者没有手动赋值,则数据库通过自增的方式给主键赋值,如果开发者手动赋值,则存入该值。
  • AUTO 默认就是数据库自增,开发者无需赋值。
  • ASSIGN_ID MP 自动赋值,雪花算法。
  • ASSIGN_UUID 主键的数据类型必须是 String ,自动生成 UUID 进行赋值。
例如:

mybatis-plus快速入门:MyBatis-Plus常用注解(4)

编写测试类

@Test void save(){ User user = new User(); user.setName("张三"); user.setAge(20); userMapper.insert(user); }

Id成功按策略插入成功

mybatis-plus快速入门:MyBatis-Plus常用注解(5)

3、@TableField

@TableField

映射 非主键 字段,value 映射字段名

例如:

当字段名与数据库字段名不一致时,报错如下:

mybatis-plus快速入门:MyBatis-Plus常用注解(6)

正确写法:

mybatis-plus快速入门:MyBatis-Plus常用注解(7)

1)exist
  • exist 表示是否为数据库字段 false,如果实体类中的成员变量在数据库中没有对应的字段,则可以使用 exist,VO、DTO

当添加数据库没有的字段时,报错如下:

mybatis-plus快速入门:MyBatis-Plus常用注解(8)

加上@TableField(exist = false),表示在数据库中没有对应的字段,即可查询成功。

mybatis-plus快速入门:MyBatis-Plus常用注解(9)

2)select
  • select 表示是否查询该字段

mybatis-plus快速入门:MyBatis-Plus常用注解(10)

3)fill
  • fill 表示是否自动填充,如create_time、update_time
1、增加字段

mybatis-plus快速入门:MyBatis-Plus常用注解(11)

2、扩充实体类

@TableField(fill = FieldFill.INSERT) //填充字段 private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) //填充字段 private Date updateTime;3、MetaObjectHandler

创建MyMetaObjectHandler类 implements MetaObjectHandler,重写两个方法。

package com.example.mybatisplus.handle; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime" System.currentTimeMillis() metaObject); // 创建时间 或者new Date() this.setFieldValByName("updateTime" System.currentTimeMillis() metaObject); // 更新时间 } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime" System.currentTimeMillis() metaObject); // 更新时间 } }4、Test

mybatis-plus快速入门:MyBatis-Plus常用注解(12)

4、@Version

@Version

标记乐观锁,通过 version 字段来保证数据的安全性,当修改数据的时候,会以 version 作为条件,当条件成立的时候才会修改成功。

1、数据库表添加 version 字段,默认值为 1

mybatis-plus快速入门:MyBatis-Plus常用注解(13)

2、实体类添加 version 成员变量,并且添加 @Version

@Version private Integer version; //乐观锁

3、配置类

package com.example.mybatisplus.config; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration // 声明为配置类 public class MyConfig { @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor(){ return new OptimisticLockerInterceptor(); // 创建一个 OptimisticLockerInterceptor 对象 } }

测试:version 1-->2

mybatis-plus快速入门:MyBatis-Plus常用注解(14)

3、@EnumValue

@EnumValue 1)枚举类注解实现

通用枚举类注解,将数据库字段 映射成 实体类的枚举类型成员变量

1、设计表

mybatis-plus快速入门:MyBatis-Plus常用注解(15)

2、实体类添加字段

private StatusEnum status; //状态 枚举类型

3、创建枚举类

package com.example.mybatisplus.enums; import com.baomidou.mybatisplus.annotation.EnumValue; public enum StatusEnum { //枚举类 enum类型的类 //奖励1 惩罚0 reward(1 "奖励") punishment(0 "惩罚"); @EnumValue private Integer code; private String msg; StatusEnum(Integer code String msg) { this.code = code; this.msg = msg; } }

4、application.yml

mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志实现类 -->打印sql type-enums-package: com.example.mybatisplus.enums # 实现类所在的包 这里

5、测试

查询id为1、2,其对应status分别为1、0

mybatis-plus快速入门:MyBatis-Plus常用注解(16)

2)接口实现

import com.baomidou.mybatisplus.core.enums.IEnum; public enum SexEnum implements IEnum<Integer> { ONE(1 "男") TWO(0 "女") private Integer code; private String msg; AgeEnum(Integer code String msg) { this.code = code; this.msg = msg; } @Override public Integer getValue() { return this.code; } }6、@TableLogic

@TableLogic

映射逻辑删除

1、数据表添加 identification字段

mybatis-plus快速入门:MyBatis-Plus常用注解(17)

2、实体类添加注解

@TableLogic private Integer identification; //是否删除标识

3、application.yml 添加配置

mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志实现类 -->打印sql type-enums-package: com.example.mybatisplus.enums # 实现类所在的包 global-config: db-config: logic-not-delete-value: 0 # 逻辑删除的值 logic-delete-value: 1 # 逻辑删除的值

4、测试

删除id为2的User identification标识 0-->1

mybatis-plus快速入门:MyBatis-Plus常用注解(18)

再次查询数据库,查不到id为2的User 逻辑删除实现。

猜您喜欢: