博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【记坑】freemarker拿不到对象的值
阅读量:3928 次
发布时间:2019-05-23

本文共 889 字,大约阅读时间需要 2 分钟。

问题

先说楼主的运行环境: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方法了!

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

以上方法任意一个即可访问成功数据

在这里插入图片描述
哦,快瞧瞧它,它有数据了!
如果本文对你有所帮助,请点赞支持一下作者~

转载地址:http://flign.baihongyu.com/

你可能感兴趣的文章
信息安全系统的组织管理
查看>>
项目时间管理脉络
查看>>
项目成本管理脉络
查看>>
项目质量管理脉络
查看>>
项目人力资源管理脉络
查看>>
项目沟通管理脉络
查看>>
项目风险管理脉络
查看>>
项目采购管理脉络
查看>>
项目管理总结
查看>>
java内存区域的分布
查看>>
JVM的GC是怎么折腾内存的
查看>>
Java跨平台的构思分析
查看>>
linux目录结构名称对照
查看>>
设计的理念
查看>>
多线程专题 - 脉络图
查看>>
javascript 函数,BOM
查看>>
javascript 客户端能力检测
查看>>
javascript DOM详解之DOM1
查看>>
javascript DOM扩展
查看>>
矛盾论读书笔记
查看>>