• 猿创征文|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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    使用场景1 字段错误

    首先我们恶意修改把正确的email 改为mail 让它故意对不上
    在这里插入图片描述

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

    在这里插入图片描述

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

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

    在这里插入图片描述
    然后再次运行查询方法 这次正确了 可见我们的注解起效了
    在这里插入图片描述
    同理 新增也是一样的 这里我们就直接设置mail的值 还是可以正常插入对应的email的值
    在这里插入图片描述
    在这里插入图片描述

    使用场景2 不存在字段

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

    在这里插入图片描述
    再次运行报错 找不到该字段

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

    @TableField(exist = false)
    在这里插入图片描述
    这个时候再次查询 发现解决了
    在这里插入图片描述

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

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

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

    // 查询的时候不返回该字段的值 默认为true(返回)
    @TableField(select=false)
    在这里插入图片描述

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

    在这里插入图片描述

    总结

    以上就是MyBatisPlus中的@TableField注解基本使用,后续如果发现更多使用技巧,会及时回来更新

  • 相关阅读:
    Yapi浏览器插件
    shallow fusion--学习笔记
    【ROS】RViz2源码分析(一):介绍
    7-Spring架构源码分析-IoC 之注册 BeanDefinitions
    深度学习之路=====9=====>>MobileNet(tensorflow2)
    【算法面试】在排序数组中查找元素的第一个和最后一个位置:详细题解
    基于BP神经网络的PID控制,基于单神经元的pid控制
    跟我学C++中级篇——Pimpl中的unique_ptr
    全国临床遗传学及遗传咨询培训在湘举行,为18省培训百名医师
    AI入门指南(二):算法、训练、模型、大模型是什么?
  • 原文地址:https://blog.csdn.net/weixin_46713508/article/details/126594310