MyBatisPlus中@TableField注解的基本使用

 更新时间:2023年07月01日 14:50:58   作者:小花皮猪  
这篇文章主要介绍了MyBatisPlus中@TableField注解的基本使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

​前言

在MP中通过@TableField注解可以指定字段的一些属性

常见解决的问题有2种:

  • 1、对象中的属性名和字段名不一致的问题(非驼峰)
  • 2、对象中的属性字段在表中不存在的问题

上述的两种情况,我们接下来一一举例说明

我们最长见的,应该就是下面这种@TableField的使用方式了,是的,没错,就是在实体里面标注这个属性是数据库表里面的某个字段,采用驼峰命名法的方式

@TableField(“user_name”)
private String userName;

前提准备

在正式操作之前,我们需要提前准备一张表

/*
 Navicat Premium Data Transfer
 Source Server         : 本地库
 Source Server Type    : MySQL
 Source Server Version : 80017
 Source Host           : localhost:3306
 Source Schema         : mp
 Target Server Type    : MySQL
 Target Server Version : 80017
 File Encoding         : 65001
 Date: 23/08/2022 22:19:37
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
  `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',
  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES (1, 'zhangsan', '123456', '张三', 18, 'test1@qq.com');
INSERT INTO `tb_user` VALUES (2, 'lisi', '123456', '李四', 20, 'test2@qq.com');
INSERT INTO `tb_user` VALUES (3, 'wangwu', '123456', '王五', 22, 'test3@qq,com');
INSERT INTO `tb_user` VALUES (4, 'zhaoliu', '123456', '赵六', 24, 'test4@qq.com');
SET FOREIGN_KEY_CHECKS = 1;

使用场景1 字段错误

首先我们恶意修改把正确的email 改为mail 让它故意对不上

此时运行查询 会报错 原因就是因为匹配不到email字段

​然后使用@TableField指定这个mail字段就是数据库里面的email字段

//指定数据库字段名称
@TableField(value = "email")

然后再次运行查询方法 这次正确了 可见我们的注解起效了

同理 新增也是一样的 这里我们就直接设置mail的值 还是可以正常插入对应的email的值

使用场景2 不存在字段

这时我在是实体里面加入一个表里面不存在的字段

再次运行报错 找不到该字段

这时候怎么解决这个问题呢通过@TableField(exist = false) 指名表里没有这个字段

@TableField(exist = false)

这个时候再次查询 发现解决了

使用场景3 不被查询的字段

如果有的字段数据比较隐私 不想被查出来怎么办呢?

我们可以使用下面的这种方式

// 查询的时候不返回该字段的值 默认为true(返回)@TableField(select=false)

运行查询 发现password的值已经被隐藏为null

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot3通过GraalVM生成exe执行文件问题

    SpringBoot3通过GraalVM生成exe执行文件问题

    文章介绍了如何安装GraalVM和Visual Studio,并通过Spring Boot项目将Java应用程序封装成可执行文件(.exe)
    2024-12-12
  • Spring自动装配之方法、构造器位置的自动注入操作

    Spring自动装配之方法、构造器位置的自动注入操作

    这篇文章主要介绍了Spring自动装配之方法、构造器位置的自动注入操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • java启动参数之谜的排查过程

    java启动参数之谜的排查过程

    在日常操作中,相信很多人对Java启动参数存在疑惑,下面这篇文章主要给大家介绍了关于java启动参数之谜的排查过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • mybatis插入数据不返回主键id的可能原因及解决方式

    mybatis插入数据不返回主键id的可能原因及解决方式

    这篇文章主要介绍了mybatis插入数据不返回主键id的可能原因及解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java基础之Comparable与Comparator概述

    Java基础之Comparable与Comparator概述

    这篇文章主要介绍了Java基础之Comparable与Comparator详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java返回json请求中文变成问号的问题及解决

    java返回json请求中文变成问号的问题及解决

    这篇文章主要介绍了java返回json请求中文变成问号的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MyEclipse 2016 CI 4新增BootStrap模板

    MyEclipse 2016 CI 4新增BootStrap模板

    MyEclipse2016是一款全球使用最为广泛的企业级开发环境程序,这篇文章主要介绍了MyEclipse 2016 CI 4新增BootStrap模板的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Java 读写Properties配置文件详解

    Java 读写Properties配置文件详解

    这篇文章主要介绍了Java 读写Properties配置文件详解的相关资料,这里举例说明该如何实现,具有参考价值,需要的朋友可以参考下
    2016-11-11
  • 基于Ant路径匹配规则AntPathMatcher的注意事项

    基于Ant路径匹配规则AntPathMatcher的注意事项

    这篇文章主要介绍了基于Ant路径匹配规则AntPathMatcher的注意事项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot整合Sharding-JDBC实现MySQL8读写分离

    SpringBoot整合Sharding-JDBC实现MySQL8读写分离

    本文是一个基于SpringBoot整合Sharding-JDBC实现读写分离的极简教程,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的可以了解一下
    2021-07-07

最新评论