欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatisPlus中@TableField注解的基本使用

 更新時(shí)間:2023年07月01日 14:50:58   作者:小花皮豬  
這篇文章主要介紹了MyBatisPlus中@TableField注解的基本使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

?前言

在MP中通過(guò)@TableField注解可以指定字段的一些屬性

常見(jiàn)解決的問(wèn)題有2種:

  • 1、對(duì)象中的屬性名和字段名不一致的問(wèn)題(非駝峰)
  • 2、對(duì)象中的屬性字段在表中不存在的問(wèn)題

上述的兩種情況,我們接下來(lái)一一舉例說(shuō)明

我們最長(zhǎng)見(jiàn)的,應(yīng)該就是下面這種@TableField的使用方式了,是的,沒(méi)錯(cuò),就是在實(shí)體里面標(biāo)注這個(gè)屬性是數(shù)據(jù)庫(kù)表里面的某個(gè)字段,采用駝峰命名法的方式

@TableField(“user_name”)
private String userName;

前提準(zhǔn)備

在正式操作之前,我們需要提前準(zhǔn)備一張表

/*
 Navicat Premium Data Transfer
 Source Server         : 本地庫(kù)
 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 '用戶(hù)名',
  `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)行查詢(xún) 會(huì)報(bào)錯(cuò) 原因就是因?yàn)槠ヅ洳坏絜mail字段

?然后使用@TableField指定這個(gè)mail字段就是數(shù)據(jù)庫(kù)里面的email字段

//指定數(shù)據(jù)庫(kù)字段名稱(chēng)
@TableField(value = "email")

然后再次運(yùn)行查詢(xún)方法 這次正確了 可見(jiàn)我們的注解起效了

同理 新增也是一樣的 這里我們就直接設(shè)置mail的值 還是可以正常插入對(duì)應(yīng)的email的值

使用場(chǎng)景2 不存在字段

這時(shí)我在是實(shí)體里面加入一個(gè)表里面不存在的字段

再次運(yùn)行報(bào)錯(cuò) 找不到該字段

這時(shí)候怎么解決這個(gè)問(wèn)題呢通過(guò)@TableField(exist = false) 指名表里沒(méi)有這個(gè)字段

@TableField(exist = false)

這個(gè)時(shí)候再次查詢(xún) 發(fā)現(xiàn)解決了

使用場(chǎng)景3 不被查詢(xún)的字段

如果有的字段數(shù)據(jù)比較隱私 不想被查出來(lái)怎么辦呢?

我們可以使用下面的這種方式

// 查詢(xún)的時(shí)候不返回該字段的值 默認(rèn)為true(返回)@TableField(select=false)

運(yùn)行查詢(xún) 發(fā)現(xiàn)password的值已經(jīng)被隱藏為null

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論