MyBatisPlus的@TableField注解基本使用

简介: 笔记

1.png


前言


在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 让它故意对不上5.png

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

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

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

7.png

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


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

9.png10.png


使用场景2 不存在字段


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

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

12.png


这时候怎么解决这个问题呢

通过@TableField(exist = false) 指名表里没有这个字段13.png这个时候再次查询 发现解决了14.png

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


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

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

// 查询的时候不返回该字段的值 默认为true(返回)

@TableField(select=false)

15.png

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

16.png

总结


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

相关文章
|
8月前
|
SQL XML Java
【mybatis】第二篇:@Select注解中加入字段判断
【mybatis】第二篇:@Select注解中加入字段判断
|
2月前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
2月前
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
86 5
|
2月前
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
59 3
|
2月前
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
199 3
|
2月前
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
142 1
|
4月前
|
SQL XML Java
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
4月前
|
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
|
5月前
|
SQL Java 数据库
5、Mybatis-Plus 常用注解
这篇文章详细介绍了Mybatis-Plus中常用的注解,包括解决实体类与数据库表名不一致、字段不匹配的问题,主键生成策略的配置,以及逻辑删除的实现方法。
5、Mybatis-Plus 常用注解
|
5月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。