前言
现如今注解开发变得非常方便,代码简洁,开发速度大大提高,成为开发的潮流,当然 MyBatis-Plus 提供了也很多注解,来简化我们的开发,提高我们的开发效率,本文将介绍 mybatis-plus 常见的注解及使用方法。
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;
}
复制代码
当数据库表名与实体类名不一致,报错如下:
2、@TableId
@TableId 描述:主键注解使用位置:实体类主键字段
设置主键映射
1)value
2)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);
复制代码
例如:
编写测试类
@Test
void save(){
User user = new User();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
}
复制代码
Id 成功按策略插入成功
3、@TableField
@TableField 描述:字段注解(非主键)
映射非主键字段,value 映射字段名
例如:
当字段名与数据库字段名不一致时,报错如下:
正确写法:
1)exist
当添加数据库没有的字段时,报错如下:
加上 @TableField(exist = false),表示在数据库中没有对应的字段,即可查询成功。
2)select
3)fill
1、增加字段
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
4、@Version
@Version 描述:乐观锁注解、标记 @Verison 在字段上
标记乐观锁,通过 version 字段来保证数据的安全性,当修改数据的时候,会以 version 作为条件,当条件成立的时候才会修改成功。
1、数据库表添加 version 字段,默认值为 1
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
5、@EnumValue
@EnumValue 描述:普通枚举类注解(注解在枚举字段上)
1)枚举类注解实现
通用枚举类注解,将数据库字段映射成实体类的枚举类型成员变量
1、设计表
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
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 字段
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
再次查询数据库,查不到 id 为 2 的 User,逻辑删除实现。
7、@SqlParser
描述:序列主键策略 oracle 属性:value、resultMap
8、@InterceptorIgnore
see 插件主体
9、@OrderBy(opens new window)
描述:内置 SQL 默认指定排序,优先级低于 wrapper 条件查询属性 类型 必须指定 默认值 描述
总结
以上就是 MyBatis-Plus 的常用注解,其中 1-6 最为常见,使用频率较高,很符合开发某些场景,注解开发可以大大节省我们的时间,简化不必要的开发,因此学好注解开发是大势所趋。
评论