MyBatis数据库列名和封装结果集对象的属性名不同名,并且没有配置结果集映射,但是能正确完成数据库和结果集对象之间的映射

本文通过一个实例解析了在未配置显式映射关系下,MyBatis如何利用构造器映射实现数据库列名与对象属性的自动匹配。揭示了在未指定映射规则时,查询字段顺序与构造器参数顺序一致时的数据映射机制。

学MyBatis的Mapper映射时,一个奇怪的问题困扰了我好些天,我明没有配置数据库和封装结果集对象之间的映射关系,并且数据库列名和封装结果集对象的属性名不同名,但是让我很惊讶,它们居然能完美一一映射!

下面是我实际的程序:

在这里插入图片描述
在这里插入图片描述
我直接用select * 查询,但是上面的程序却能完美映射,没有配置结果集映射,并且数据库列名和封装结果集对象的属性名不同名(当然后来我又知道了驼峰匹配,但是这里不是驼峰匹配导致的)。
后背感觉有些发凉。。。。
直到我今天学到了构造器映射,我才突然想起起那几天的“灵异bug”,茅塞顿开
!我马上去检查我的User类的构造器。
在这里插入图片描述

果不出其然,我没有写无参数构造器!!!所以程序只能调用带参数构造器,并且我的select查询字段的顺序正好与构造器参数位置顺序对应上了,所以查询出来的数据作为参数按照查询顺序分别传递给了有参数构造器,所以实质上这是一个构造器映射。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值