MyBatisPlus中@TableField注解的基本使用
?前言
在MP中通過@TableField注解可以指定字段的一些屬性
常見解決的問題有2種:
- 1、對象中的屬性名和字段名不一致的問題(非駝峰)
- 2、對象中的屬性字段在表中不存在的問題
上述的兩種情況,我們接下來一一舉例說明
我們最長見的,應(yīng)該就是下面這種@TableField的使用方式了,是的,沒錯,就是在實體里面標(biāo)注這個屬性是數(shù)據(jù)庫表里面的某個字段,采用駝峰命名法的方式
@TableField(“user_name”) private String userName;
前提準(zhǔn)備
在正式操作之前,我們需要提前準(zhǔn)備一張表
/* 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字段就是數(shù)據(jù)庫里面的email字段
//指定數(shù)據(jù)庫字段名稱 @TableField(value = "email")
然后再次運行查詢方法 這次正確了 可見我們的注解起效了
同理 新增也是一樣的 這里我們就直接設(shè)置mail的值 還是可以正常插入對應(yīng)的email的值
使用場景2 不存在字段
這時我在是實體里面加入一個表里面不存在的字段
再次運行報錯 找不到該字段
這時候怎么解決這個問題呢通過@TableField(exist = false) 指名表里沒有這個字段
@TableField(exist = false)
這個時候再次查詢 發(fā)現(xiàn)解決了
使用場景3 不被查詢的字段
如果有的字段數(shù)據(jù)比較隱私 不想被查出來怎么辦呢?
我們可以使用下面的這種方式
// 查詢的時候不返回該字段的值 默認(rèn)為true(返回)@TableField(select=false)
運行查詢 發(fā)現(xiàn)password的值已經(jīng)被隱藏為null
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- j2ee mybatis注解@Data,@TableName,@TableField使用方式
- 注解@TableName,@TableField,pgsql的模式對應(yīng)方式
- mybatis-plus常用注解@TableId和@TableField的用法
- mybatis?plus框架@TableField注解不生效問題及解決方案
- Java如何獲取@TableField,@TableName注解的值
- MyBatisPlus使用@TableField注解處理默認(rèn)填充時間的問題
- Mybatis-plus使用注解 @TableField(exist = false)
- @TableField注解之深入理解與應(yīng)用方式
相關(guān)文章
SpringBoot3通過GraalVM生成exe執(zhí)行文件問題
文章介紹了如何安裝GraalVM和Visual Studio,并通過Spring Boot項目將Java應(yīng)用程序封裝成可執(zhí)行文件(.exe)2024-12-12Spring自動裝配之方法、構(gòu)造器位置的自動注入操作
這篇文章主要介紹了Spring自動裝配之方法、構(gòu)造器位置的自動注入操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式
這篇文章主要介紹了mybatis插入數(shù)據(jù)不返回主鍵id的可能原因及解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Java基礎(chǔ)之Comparable與Comparator概述
這篇文章主要介紹了Java基礎(chǔ)之Comparable與Comparator詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04MyEclipse 2016 CI 4新增BootStrap模板
MyEclipse2016是一款全球使用最為廣泛的企業(yè)級開發(fā)環(huán)境程序,這篇文章主要介紹了MyEclipse 2016 CI 4新增BootStrap模板的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06基于Ant路徑匹配規(guī)則AntPathMatcher的注意事項
這篇文章主要介紹了基于Ant路徑匹配規(guī)則AntPathMatcher的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11SpringBoot整合Sharding-JDBC實現(xiàn)MySQL8讀寫分離
本文是一個基于SpringBoot整合Sharding-JDBC實現(xiàn)讀寫分離的極簡教程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的可以了解一下2021-07-07