吐槽jdbcTemplate.queryForObject中的BeanPropertyRowMapper

文章指出jdbcTemplate的queryForObject方法中BeanPropertyRowMapper的映射功能有限,要求Java类属性名必须严格匹配数据库字段,包括名称和类型。当命名不一致时,会导致读取到的数据为空值。只有当两者命名统一后,才能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

真的是个大坑,jdbcTemplate.queryForObject中的BeanPropertyRowMapper的功能太弱了,虽说它也能实现spring orm功能,但是相比之下,还是很弱。

Spring的ORM(Object-Relational Mapping)
是一种将对象和关系型数据库进行映射的技术,它使得在Java应用程序和关系型数据库之间进行数据转换变得更加容易。使用ORM技术,可以通过Java代码来进行数据库操作,而不需要直接使用SQL语句。

而jdbcTemplate.queryForObject中的BeanPropertyRowMapper有着严格的命名限制,比如你在spring封装的类的属性名称必须要和数据库中的字段名称相同,包括类型和名字。最多可以在中间添加一个下划线,否则就无法实现映射,读出来的值都有问题。像下面这样

[Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}, Books{ids=0, names='null', price=0}]

全是空值

当将两者修改统一后,就OK了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值