MyBatisPlus - 实体类 的 常用注解

简介: 举例说明MyBatisPlus中实体类的常用注解,包括@TableName、@TableId、@TableField、@TableLogic

@TableName("表名")

假设

表名是 book,实体类类名是 Book

MyBatisPlus会进行自动映射

但如果 表名是 tab_book,实体类类名是 Book

那么MyBatisPlus就无法进行自动映射,需要我们使用 @TableName注解 去指定实体类对应的表

如下

@TableName("tab_book")
@Data
public class Book {
    private Integer id;
    private String name;
    private String type;
    private String description;
}

@TableId()

查看@TableId 注解源码,如下

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface TableId {
    String value() default "";

    IdType type() default IdType.NONE;
}

我们发现有两个属性 value 和 type

其中的 type 用于指定Id的生成策略,我再另外一篇博客进行了非常详细的整理,地址如下:

[MyBatisPlus之id生成策略]

value的作用类似@TableName,当 实体类的 主键 属性名 与 数据表 中的 主键 字段名不同时,就通过value做映射,如下<表中的字段名为 uid >

@TableName("tab_book")
@Data
public class Book {
    @TableId(value = "uid")
    private Integer id;
    private String name;
    private String type;
    private String description;
}

如果属性名为value,则value可以不显式指明

    @TableId("uid")
    private Integer id;

@TableField

实体类的 主键 属性名 与 数据表 中的 主键 字段名不同时,通过 @TableId() 中的value属性做映射

那实体类的 非主键 属性名 与 数据表 中的 非主键 字段名不同时,就使用 @TableField

比如:实体类属性名为name,而表中字段名为book_name,那么就需要做如下映射

@TableName("tab_book")
@Data
public class Book {
    @TableId(value = "uid")
    private Integer id;
    @TableField("book_name")
    private String name;
    private String type;
    private String description;
}

但是 如果实体类属性名为bookName,而表中字段名为book_name,那么我们就无需再指定,MyBatisPlus 能自动处理这种映射

@TableLogic

真实删除 -- 使用 delete语句 将数据库中的记录直接删除,但是这种做法是十分危险的,因此开发中的删除一般是逻辑删除

逻辑删除 -- 使用一个删除标记字段,如 is_deleted ,初始值为0,置为 1 为逻辑上删除

因此逻辑删除实际上是修改功能

那如何使用呢?

首先在表中添加 is_deleted 字段,类型为int ,长度为1,默认值为 0

在实体类中添加 isDeleted 属性,然后在该属性上添加 @TableLogic 注解,如下

@TableName("tab_book")
@Data
public class Book {
    @TableId(value = "uid")
    private Integer id;
    @TableField("book_name")
    private String name;
    private String type;
    private String description;
    @TableLogic
    private Integer isDeleted;
}

运行删除方法

    @Test
    void testGetById() {
        bookService.removeById(1);
    }

查看日志

JDBC Connection [HikariProxyConnection@1430358188 wrapping com.mysql.cj.jdbc.ConnectionImpl@1f43cab7] will not be managed by Spring
==>  Preparing: UPDATE tab_book SET is_deleted=1 WHERE id=? AND is_deleted=0
==> Parameters: 1(Integer)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21a9a705]

发现是update ,并且是将 is_deleted 字段由 0 变 1

目录
相关文章
|
4天前
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
20 3
|
2天前
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
12 1
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
2月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
3月前
|
SQL Java 数据库
5、Mybatis-Plus 常用注解
这篇文章详细介绍了Mybatis-Plus中常用的注解,包括解决实体类与数据库表名不一致、字段不匹配的问题,主键生成策略的配置,以及逻辑删除的实现方法。
5、Mybatis-Plus 常用注解
|
3月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
|
4月前
|
Java 数据库连接 Maven
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
|
5月前
|
Java 数据库连接 数据库
Springboot整合mybatis注解版(202005)
Springboot整合mybatis注解版(202005)
|
5月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
63 2
|
4月前
|
数据库
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is