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