论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
向量数据库
›
利用MyBatisPlus让数据库和实体类字段主动映射 ...
利用MyBatisPlus让数据库和实体类字段主动映射
兜兜零元
金牌会员
|
2024-8-6 18:32:47
|
显示全部楼层
|
阅读模式
楼主
主题
989
|
帖子
989
|
积分
2967
利用MyBatisPlus让数据库和实体类字段主动映射
需求场景
数据库表中的字段名字,与实体类中的属性名字不同等,我们想要让二者映射起来的时间,该怎么操作?比如数据库表中的字段名字如下图:
而User实体类中的属性名字如下图:
可以发现名字和年岁这两个字段是不一样的。那么这个时间如果我们想要映射,怎样可以正确的映射呢?
假如没有映射
假如没有映射,看下我们的sql语句,如下图:
看下我们的数据库表信息,如下图:
那么我们查询的结果是什么样的呢?如下图:
可以发现,我们的查询结果中name和age都是null。这也很容易理解,因为数据库表字段和实体类字段没有正确的映射嘛,以是查询结果肯定是空的。
把映射放到sql语句中
因此我们第一种解决方式是把映射写到mapper.xml文件的sql语句中,如下图:
只把名字差别的映射起来就行了,名字类似的address是不消写的。
末了看下查询结果,如下图:
可以发现我们查询结果中的name和age都有值了。
利用MyBatisPlus提供的注解简化映射
但是上面的映射有什么问题呢?就是实现起来过于复杂,要写的东西太多了,因此我们后续又出现了MyBatisPlus提供的映射方式,就是我们可以直接通过注解映射。直接把注解写在User实体类上就可以了,如下图:
本来以为这样写的话应该可以完成主动映射,但是测试的好像照旧不可,结果如下图:
并没有完成主动映射。
现在还没有找到缘故原由,不事后面先按照ResultMap映射把照旧。
那既然不能映射的话,@TableField注解是干什么用的呢?原来是我搞错了,@TableField注解不是查询时映射的,而是插入时映射的,就是假如我现在利用MyBatisPlus往数据库user表内里插入一条数据,User实体的属性是name和age,而数据库表的属性是user_name和user_age,那么这样就插入不进去了,就会出现非常了,如下图:
因为解析的时间是直接把User实体的name属性当做了插入语句的列名,而现实上我们需要的是user_name,因此这里就会出现非常了。而当我们利用@TableField标记数据库表和属性字段的映射的时间,这个错误就会消失了,如下图:
错误消失如下图:
看一下数据库中的插入结果,如下图:
因此@TableField注解重要是用于插入映射的,而不是查询映射。
注意我们这里利用的插入是MyBatisPlus中主动引入的插入方法insert。那我就突然想到,会不会当我们利用MyBatisPlus自带的查询方法的时间,我们利用@TableField注解的查询也会主动映射呢?
利用MyBatisPlus自带的原生方法,如下图:
看下查询结果,如下图:
发现确实是可以映射的。
因此我就得出一个结论,只有利用的是MyBatisPlus自带的数据库的操作方法的时间,@TableField注解映射才有结果,否则的话是没有结果的
。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
兜兜零元
金牌会员
这个人很懒什么都没写!
楼主热帖
数据库的建立、增、删、改、查 ...
深入解析kubernetes中的选举机制 ...
【黄啊码】MySQL入门—4、掌握这些数据 ...
Oracle调度器Scheduler
clang-format的使用
MySQL安装配置
V Rising 服务器搭建
2万多条健康网站文章大全ACCESS\EXCEL ...
02-MySQL高级
【黄啊码】MySQL入门—5、数据库小技巧 ...
标签云
运维
CIO
存储
服务器
浏览过的版块
鸿蒙
快速回复
返回顶部
返回列表