【记坑】freemarker拿不到对象的值

问题

先说楼主的运行环境:springboot+Lombok+mybatis+freemarker
mybatis使用generate mybatis来生成的dao层、实体类层、xml层
实体类给一个@Data,让它自己生成setter和getter方法

然后我就脑袋一抽照着数据库的属性值去freemarker中拿值了,结果半天一个值拿不到,只有神秘的空行占据着内容:
在这里插入图片描述
在这里插入图片描述
然而测试的字符串数据可以显示,那么显然不是freemarker坏了,是我坏了。

为什么

lombok的@Data的getter/setter是将属性的首字母大写再拼接到get或者set后面的,
比如说一个属性:pTid
那么lombok生成的是getPTid()
java自动生成是生成什么呢?getpTid()
注意到区别没有?
lombok不管你第二个字符大写还是小写,都让你首字母大写再拼成get方法,
而java自动生成是如果第二个字母大写了,就直接拼到get后面。

说到这?为啥我拿不到数据?
因为freemarker用的是java自动生成的这种规则来找get方法,我用lombok自动生成就使得这种第二个首字母大写的属性找不到了!
于是我翻来覆去没数据,查找了很多资料,上面满满的两个字:瞎搞!

解决方案

1、将lombok扔掉!,老老实实java自动生成的get/set属性,成也风云,败也风云!
2、将属性全部小写,这样lombok生成的就是符合规范的javabean形式,freemarker可以获取数据,但会对mybatis的xml文件增加难度,需要写跟数据库列名不一致的属性对接(但是free-mybatis插件生成的实体类的属性就是全小写的,作者真是机智)
3、lombok既不要扔掉,属性也不用改,在lombok的基础上再用java自动生成生成所有的get方法,这样freemarker又可以找到get方法了!

忠告:去实体类拿属性名,别去数据库拿,说不定你属性名写错了呢?

以上方法任意一个即可访问成功数据
在这里插入图片描述
哦,快瞧瞧它,它有数据了!
如果本文对你有所帮助,请点赞支持一下作者~

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值