MyBaits-Plus中@TableField和@TableId用法

news2024/10/6 6:00:30

目录

前言

一、@TableField(value = "表字段")

二、@TableField(select = false)

 三、@TableField(exist = false)

 四、@TableId(type = IdType.AUTO)补充

总结



前言

接着前两篇mybatis-plus的知识点

Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客

Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客

本文主要写MP中注解@TableField的用法。这正是上文提到的数据库表与设置变量非驼峰该怎么对应?这种问题的解决方法。


一、@TableField(value = "表字段")

如果表的字段与pojo类的属性值对应不上,就像表字段为user_name,但是属性的为uName时,在查询所有中就会报错,找不到表的字段信息。java.sql.SQLSyntaxErrorException: Unknown column 'u_name' in 'field list'  如下图所示:

 就是表的字段和User类没有对应上。这里就需要加入该注解@TableField(value = "user_name")

解决字段不一致问题(value写表字段名,使得一一对应起来。
注:但如果是下面情况:表字段user_name。定义的userName。驼峰命名会自动识别。不写注解也可以)


    @TableField(value = "user_name")
    private String uName;

再次运行即可解决该问题 如图所示:

 及该问题就以解决。

二、@TableField(select = false)

这是用来解决如果用户名密码不想显示时可以在属性上添加该字段,sql语句就不会去查询该字段。这样在查询时密码字段会变成null输出,保证安全性。

 //查询不显示用户密码
    @TableField(select = false)
    private String userPassword;

 在使用测试方法查询所有用户信息 如下图所示:可看到密码都为null

 三、@TableField(exist = false)

在添加中,如果User类下的属性数据库字段没有,再添加时还会给这个属性赋值,然后发送到mapper执行插入数据操作时就会报错。java.sql.SQLSyntaxErrorException: Unknown column 'hobby' in 'field list'

执行下面的测试方法进行测试:

//测试添加方法
    @Test
    public void testInsert(){
        User user=new User();
        user.setUserName("哈哈111");
        user.setUserEmail("12433");
        user.setUserRole("ADMIN");
        user.setUserStatus("0");
        user.setUserPassword("12344");

//        表中没有字段
        user.setHobby("足球");
        //受影响的行数  count
        int count = userMapper.insert(user);
        if(count>0){//添加成功
            //输出所有数据
            testSelectList();
        }else {//添加失败
            System.out.println("添加失败~");
        }
    }

如下图所示:

解决该方法就要使用 @TableField(exist = false)注解,表示数据表中没有该字段,添加时生成sql代码就会知道。

//数据库中没有该字段时需要添加注解
@TableField(exist = false)
private String hobby;

查看执行效果图:执行成功!!!

 四、@TableId(type = IdType.AUTO)补充

这个是通过id查询时,如果不在id主键属性上添加该注解的话,就会报以下错误,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.imust.mp.mapper.UserMapper.selectById

如图所示:

 这就表名虽然有属性和表字段也对应,但是在通过id查询时MP不知道这个是主键,所以无法执行该方法,解决方法就是在属性上添加@TableId(type = IdType.AUTO),type等于的值有很多,一般主键都是用这个。其他的值感兴趣的可看源码。

@TableId(type = IdType.AUTO)
    private Integer userId;

查看运行效果 如图所示:

可看出自动生成的sql语句和执行成功的该方法。 


总结

MP中的@TableField注解和@TableId注解的简单使用,保证一些简单的MP+SpringBoot开发中必备的知识点。学会使用这些知识点会使你的基础知识更加牢固,在以后碰到类似的情况会节约很多查资料的时间。也是在运用MP时必须要掌握的知识点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读: Disentangled lmage Colorization via Global Anchors

Disentangled lmage Colorization via Global Anchors发表于SIGGRAPH ASIA 2022,是一篇基于深度学习的图像彩色化的工作,简单介绍一下。之前曾分享过一篇彩色化的经典论文:经典论文回顾: Colorization using Optimization。 作者认为图像彩色…

【数据库】索引

MySQL索引 1、B树索引 是InnoDB引擎默认的索引 B树结构 B树是平衡树,即所有叶子节点都在同一层的多叉树 每个节点中key和指针交替排列,两个key之间的指针指向的是大于等于左边key且小于等于右边key的节点 叶子节点顺次连接,所以沿着B树的叶…

ADAU1860调试心得(5)ADC-DAC直通程序

硬件、驱动全部都搞好了,我觉得调试记录的话,就从最简单的开始,先做一个直通的例程。先把这个板子弄出声来,会用sigmastudio,会做ADAU开发的兄弟们应该很熟悉,同样的配方,同样的味道&#xff0c…

Nginx--单向链表分析

1.基本数据结构 1.1结点 struct ngx_list_part_s {void *elts;ngx_uint_t nelts;ngx_list_part_t *next; };结构成员分析 void* elts :数组元素指针 ngx_uint_t :数组里面的元素数量 ngx_list_part_t*…

英文Assignment写作引用格式怎么分析?

英文Assignment写作中我们常常使用不同作家和研究员的观点,论证来支持自己的想法。引用他们原文的时候我们必须使用具体引用格式。不同学校对引用格式都有不同的要求。事实上,有很多不同的引用格式,大约有超过200种引用格式。例如我们耳熟能详…

一文读懂!异常检测全攻略!从统计方法到机器学习

💡 作者:韩信子ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://showmea…

Day12--优化分类页面的效果

1.提出一个问题,当你点击一级分类的时候,在三级分类中滚动自己的进度条。切换到之后的另一级分类再看看其三级分类时不是再最顶部。 我的操作: 1》在cate.vue中: *************************************************************…

大数据必看:大厂十年架构师职业生涯实战经验总结,《大规模分布式系统架构与设计实战》

前言 这段时间一直在读一本书《大规模分布式系统架构与设计实战》,这是淘宝千峰老师的作品,是从程序员到首席架构师十多年职业生涯的实战经验总结。 这本书其实是围绕着Fourinone在讲分布式,并非分布式理论,所以只适用于想研究F…

【allegro 17.4软件操作保姆级教程五】布线前准备之过孔、差分对、布线集合添加

目录 1.1 过孔添加与设置 1.2 添加差分对 1.3 添加布线集合 1.1 过孔添加与设置 布线换层时需要由过孔贯穿,而软件本身是没有过孔可以直接调用的,所以需要手动添加和设置。一般我们使用的都是通孔,盲孔和埋孔成本高,一般不使用。…

PG::Photography

nmap -Pn -p- -T4 --min-rate1000 192.168.171.76 nmap -Pn -p 22,80,139,445,8000 -sCV 192.168.171.76 查看8000端口的内容 CMS的关键字“Built with Koken” 存在的漏洞需要认证 https://www.exploit-db.com/exploits/48706 在端口枚举时,该靶机有smb服务&am…

MyBatis-Plus之DML编程控制

1. id生成策略控制 前面我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容,我们更想要的是按照数据库表字段进行自增长,在解决这个问题之前,我们先来分析下ID该如何选择: 不同的表应…

vscode一键生成佛祖保佑永无bug

工欲善其事,必先利其器 今天给大家分享一个vscode注释插件-koroFileHeader,可以快速给我们的文件和函数添加注释,快来看看吧 安装 打开vscode拓展,搜索“koroFileHeader”,安装,重新启动一下 使用 快捷键 生…

【配置nacos】使用application.yml配置文件来配置spring-cloud-starter-alibaba-nacos-config

1.首先修改pom.xml文件&#xff0c;引入spring-cloud-starter-alibaba-nacos-config依赖 <!--Nacos配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><…

Java#26(常见算法: 排序算法)

目录 一.冒泡排序 相邻元素之间两两比较,大的放右边,小的放左边 二.选择排序 从0索引开始,拿着每一个索引上的元素和后面的元素依次标胶,小的放在前面,大的放在后面 三.插入排序 假如0到n索引的数据遵循从小到大排序,就可以将0-n看做有序的,则n1到最大索引都是无序的 四…

【日常系列】LeetCode《19·BFS 和 DFS》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 lc 589 &#xff1a;N 叉树的前序遍历 https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 提示&#xff1a; 节点总数在范围 [0, 104]内 0 &l…

最简单的git图解(git rebase)

今天我们来讲解下git rebase命令&#xff0c;以及git rebase命令与git merge命令的区别。 git rebase图解&#xff1a; 假设我们目前有master、demo两个分支&#xff0c;而且demo分支上从master分支上切出来的&#xff1a; 从上图中可以看到&#xff0c;我们从C2提交点切出来了…

图像边缘检测与图像分割常用算法研究分析-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 引言✳️ 一、经典边缘检测算子✳️ 1.1 Roberts 算子与实验验证✳️ 1.2 Sobel 算子原理与实验验证✳️ 1.3 Prewitt 算子与实验验证✳️ 1.4 Log 算子与实验验证✳️ 1.5 Canny 算子与实验验证✳️ 二、图像分割原理及其实验验证✳️ 2.1 基于阈值处理的…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (5)- 自定义功能块(下)

AWPLC 目前还处于开发阶段的早期&#xff0c;写这个系列文章的目的&#xff0c;除了用来验证目前所做的工作外&#xff0c;还希望得到大家的指点和反馈。如果您有任何疑问和建议&#xff0c;请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere&#xff0c;是 ZLG 开发的开源…

logback 集成 logstash

logback 集成 logstash 相关环境参考&#xff1a; Java 输出 JSON 日志 1. 添加依赖 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>7.2</version> </depend…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法&#xff0c;PageRank算法主要用于给互联网网页排序&#xff0c;根据网页之间的跳转来构造一个初始权重矩阵&#xff08;转移矩阵&#xff09;&#xff0c;默认每个网页质量都是1 使用一个向量v&…