深入理解@TableField注解的使用-MybatisPlus教程

简介: `@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程

在MyBatis-Plus中,@TableField注解用于控制实体类与数据库表字段之间的映射关系。通过合理使用 @TableField注解,可以更灵活地控制字段的映射、查询和插入等行为。以下是对@TableField注解的深入理解和使用方法的详细介绍。

基本用法

@TableField注解主要用于字段的属性映射,通常使用在实体类的字段上。其常见的属性包括 valueexistfill等。

1. value属性

value属性用于指定数据库表中的实际字段名称。如果实体类的字段名与数据库表字段名不一致,可以通过 value属性进行映射。

import com.baomidou.mybatisplus.annotation.TableField;

public class User {

    @TableField("user_name")
    private String userName;

    // getter and setter
}
​

在上述例子中,userName字段将映射到数据库表中的 user_name字段。

2. exist属性

exist属性用于指定该字段是否在数据库表中存在。如果某个字段在数据库表中不存在,但又不想删除该字段,可以设置 exist = false

import com.baomidou.mybatisplus.annotation.TableField;

public class User {

    @TableField(exist = false)
    private String temporaryData;

    // getter and setter
}
​

在上述例子中,temporaryData字段在数据库表中不存在,但它仍然可以在实体类中使用。

3. fill属性

fill属性用于指定字段的填充策略。MyBatis-Plus提供了多种填充策略,例如在插入或更新时自动填充字段。

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import java.time.LocalDateTime;

public class User {

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    // getter and setter
}
​

在上述例子中,createTime字段将在插入记录时自动填充当前时间。

高级用法

1. 使用条件查询

通过 @TableField注解,可以指定在查询条件中使用的SQL片段。常见的属性有 condition

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

public class User {

    @TableField(condition = "%s LIKE CONCAT('%%',#{%s},'%%')")
    private String email;

    // getter and setter
}

// 使用示例
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("email", "example.com");
​

在上述例子中,email字段在查询时使用了 LIKE条件。

2. 字段加密和解密

在某些场景中,可能需要对字段进行加密存储和解密读取。可以通过自定义的类型处理器实现。

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.EncryptHandler;

public class User {

    @TableField(typeHandler = EncryptHandler.class)
    private String sensitiveData;

    // getter and setter
}
​

分析说明表

属性 说明 示例
value 指定数据库表中的实际字段名称 @TableField("user_name")
exist 指定字段是否在数据库表中存在 @TableField(exist = false)
fill 指定字段的填充策略 @TableField(fill = FieldFill.INSERT)
condition 指定查询条件中使用的SQL片段 @TableField(condition = "%s LIKE CONCAT('%%',#{%s},'%%')")
typeHandler 指定自定义的类型处理器用于字段的加密和解密 @TableField(typeHandler = EncryptHandler.class)

结论

@TableField注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 @TableField注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程

目录
相关文章
|
3天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
12天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
13天前
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
41 5
|
13天前
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
34 3
|
18天前
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
36 1
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
288 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
3月前
|
XML 缓存 Java
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
文章提供了一份详尽的Mybatis使用教程,涵盖了Mybatis的简介、环境搭建、基本操作、配置解析、日志使用、分页、注解开发、多对一和一对多关系处理、动态SQL以及缓存机制等方面的内容,并提供了相应的代码示例和测试用例。
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
|
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 常用注解