首页 > 其他分享 >Mybatis-Plus常用注解

Mybatis-Plus常用注解

时间:2023-05-07 19:46:19浏览次数:35  
标签:实体类 删除 数据库 id Plus Mybatis 注解 主键

@TableName

@TableName 设置实体类对应表名

在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在 Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表。

MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致

问题:

若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?

将表user更名为t_user,测试查询功能。报错:

image-20230507191546327

解决方法:

  • 实体类添加 @TableName 注解解决
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
  • 全局配置解决:
  global-config:
    db-config:
      # 配置MyBatis-Plus操作表的默认前缀
      table-prefix: t_

如果实体类所对应的表都有固定的前缀,例如t_或tbl_ 此时,可以使用MyBatis-Plus提供的全局配置,为实体类所对应的表名设置默认的前缀,就不需要在每个实体类上通过@TableName标识实体类对应的表。

@TableId

@TableId 将属性所对应的字段设置为主键

@TableId的value属性:指定数据库主键字段。

@TableId的type属性:指定主键生成策略。默认为ASSIGN_ID(雪花算法

常见的主键生成策略:

描述
IdType.ASSIGN_ID(默 认) 基于雪花算法的策略生成数据id,与数据库id是否设置自增无关
IdType.AUTO 使用数据库的自增策略,注意,该类型请确保数据库设置了id自增, 否则无效

配置全局主键策略

global-config:
    db-config:
      # 配置MyBatis-Plus的主键策略
      id-type: assign_id

雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的 主键的有序性。

@TableField

@TableField是字段注解(非主键)

当实体类中的属性名和字段名不一致时,可以通过@TableField配置数据库字段。

@TableLogic

@TableLogic是逻辑删除字段。

配置逻辑删除字段后,执行删除功能,真正执行的是修改。执行查询功能,被逻辑删除的数据默认不会被查询。

什么是逻辑删除?

  • 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数据
  • 逻辑删除:假删除,将对应数据中代表是否被删除字段的状态修改为“被删除状态”,之后在数据库 中仍旧能看到此条数据记录
  • 使用场景:可以进行数据恢复

@TableLogic 属性:

属性 类型 必须指定 默认值 描述
value String "" 逻辑未删除值
delval String "" 逻辑删除值。如果要删除后的值id,就配置delval = "id"

标签:实体类,删除,数据库,id,Plus,Mybatis,注解,主键
From: https://www.cnblogs.com/1963942081zzx/p/17379920.html

相关文章

  • 使用 @ResponseBody 注解直接返回json字符串结果中文出现乱码
    在类上直接使用@RestController,这样子,里面所有的方法都只会返回json字符串了,不用再每一个都添加@ResponseBody!我们在前后端分离开发中,一般都使用@RestController,十分便捷!@RestControllerpublicclassUserController{//produces:指定响应体返回类型和编码@Request......
  • Spring中@Bean注解的作用以及如何使用
    Spring中@Bean注解的作用以及如何使用一、Bean是啥1、Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化); 2、凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性; 3、规律:凡是子类及带有方法或属性的类都要加上注册Bean到SpringIo......
  • Mybatis-Plus基本CRUD——通用Service
    通用ServiceCRUD封装IService接口,进一步封装CRUD采用get查询单行remove删除list查询集合page分页前缀命名方式区分Mapper层避免混淆。MyBatis-Plus中有一个接口IService和其实现类ServiceImpl,封装了常见的业务层逻辑。创建Service接口和实现类IUserService......
  • Mybatis-Plus基本CRUD——通用Mapper
    BaseMapper接口MyBatis-Plus中的基本CRUD在内置的BaseMapper中都已得到了实现,我们可以直接使用,接口如下:/***Mapper继承该接口后,无需编写mapper.xml文件,即可获得CRUD功能*<p>这个Mapper支持id泛型</p>**@authorhubin*@since2016-01-23*/publicinter......
  • Mybatis缓存机制
    1.ORM映射:将数据库中的一条语句映射到Java对象。2.MyBatis缓存机制:执行查询语句时候,将查询结果放到缓存当中(内存),如果下一次还是执行完全相同的查询语句,直接从缓存中拿数据。不再查数据库。不再去硬盘上找数据。目的是为了提高效率,通过减少IO的方式提高效率。3.缓存指针对查询语......
  • Mybatis-Plus 简介及入门案例
    Mybatis简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://www.baomidou.com/特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本......
  • 在vue3中使用elementPlus的el-select时样式穿透问题
    下拉框的option样式只能在全局样式里改,千万不能用scope,否则不生效<el-selectclass="select":popper-append-to-body="false"v-model="selectValue"placeholder="请选择"popper-class="select-option"><......
  • springboot集成下,mybatis的mapper代理对象究竟是如何生成的
    springboot集成下,mybatis的mapper代理对象究竟是如何生成的 前情回顾Mybatis源码解析-mapper代理对象的生成,你有想过吗,我们讲到了mybatis操作数据库的流程:先创建SqlSessionFactory,然后创建SqlSession,然后再创建获取mapper代理对象,最后利用mapper代理对象完成数据库......
  • MyBatis-02CRUD操作及配置解析01
    上集回顾:第一个程序namespace将上面案例中的UserMapper接口改名为UserDao;将UserMapper.xml中的namespace改为为UserDao的路径.再次测试结论:配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!1CRUD操作及配置解析1.1selectselect标......
  • 《面试1v1》Java注解
    我是javapub,一名Markdown程序员从......