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

  • value 映射主键字段名

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 进行赋值。

例如:

编写测试类

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

Id成功按策略插入成功

3、@TableField

@TableField

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

例如:

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

正确写法:

1)exist

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

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

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

2)select

  • select 表示是否查询该字段

3)fill

  • fill 表示是否自动填充,如create_time、update_time
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

标记乐观锁,通过 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

3、@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,逻辑删除实现。

MyBatis-Plus(二、常用注解)的更多相关文章

  1. <SpringMvc>入门二 常用注解

    1.@RequestMapping @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME ...

  2. Mybatis 常用注解

    Mybatis常用注解对应的目标和标签如表所示: 注解 目标 对应的XML标签 @CacheNamespace 类 <cache> @CacheNamespaceRef 类 <cac ...

  3. spring(二、bean生命周期、用到的设计模式、常用注解)

    spring(二.bean生命周期.用到的设计模式.常用注解) Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的. ...

  4. SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置

    一.SpringBoot常用注解二.SpringBoot自动配置机制SpringBoot版本:1.5.13.RELEASE 对应官方文档链接:https://docs.spring.io/spring ...

  5. spring,spring mvc,mybatis 常用注解

    文章来源:https://www.cnblogs.com/hello-tl/p/9209063.html  0.在spring,soring mvc, mybistis 中的常用注解有一下 <! ...

  6. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

  7. Spring Boot 二十个注解

    Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...

  8. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  9. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  10. SpringMVC常用注解,返回方式,路径匹配形式,验证

    常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...

随机推荐

  1. einsum函数介绍-张量常用操作

    einsum函数说明 pytorch文档说明:\(torch.einsum(equation, **operands)\) 使用基于爱因斯坦求和约定的符号,将输入operands的元素沿指定的维数求和 ...

  2. 队列的java实现

    今天老师提出一个问题,就是如何用java实现队列呢?我在网上找了许多资料,发现java也是可以很轻松的实现队列. 如下代码: package com; import java.util.Collect ...

  3. 10个常见触发IO瓶颈的高频业务场景

    摘要:本文从应用业务优化角度,以常见触发IO慢的业务SQL场景为例,指导如何通过优化业务去提升IO效率和降低IO. 本文分享自华为云社区<GaussDB(DWS)性能优化之业务降IO优化> ...

  4. idea运行Tomcat出现 Address localhost:8080 is already in useAddress localhost:8080 is already in use

    使用IDEA运行 tomcat时出现 Address localhost:8080 is already in use,就很奇怪,我明明只有这一个程序呀,怎么还会被占用.后来想想可能就是被其他进程占用 ...

  5. 使用Vite2+TypeScript4+Vue3技术栈,如何入手开发项目

    前言 今天,我们使用Vite2.0+Vue3+TS来试玩一下,开发一个demo项目.实战 我们,打开Vite官方网站(https://cn.vitejs.dev/). Vite (法语意为 " ...

  6. WPF第三方控件,只能输入数字型数据

    话不多说,根据最近项目需求,为了减少输入验证等相关代码量,需要此控件 先上效果图 默认样式是这样,自己可以根据需求修改外形,但我更喜欢它自带的简洁版 有人可能会问怎么实现的呢?其实很简单,我们设置它的 ...

  7. 压测工具Apache Bench的安装与使用

    压测工具使用指南: Apache Bench 下载64位 压缩 cmd打开bin目录 使用abs.exe [option] http[s]://www.asb.com 来测试 其中option: -n ...

  8. Linux 源码编译安装软件

    程序包编译安装的步骤: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 1.编译源码的项目工具 使用相关的 ...

  9. 说什么也要脱单——Python WEB开发:用Tornado框架制作简易【表白墙】网站

    先来哔哔两句:(https://jq.qq.com/?_wv=1027&k=QgGWqAVF) 今天我们要用Python做Web开发,做一个简单的[表白墙]网站.众所周知表白墙的功能普遍更多的 ...

  10. OWL页面创建Copy功能,把选择内容复制到QC