数据库中checkResult字段有值,数据库通过SQL可以正常查出,但SSM项目页面该字段的值却显示不出来。然后我从以下3个方面去查找原因:
1.映射文件的列名与属性不一致
2.查询的SQL语句缺少该字段
3.实体类中添加了别名的注解@SerializedName("")
三个方面都进行了查找,发现列名与属性写法没有问题,SQL语句也有该字段,实体类中该字段没有别名注解,
百思不得其解之际,我反复查看控制台打印出来的SQL终于找出症结所在,以下是其中部分SQL:
DISABLED_BY, DUNS, DISABLED_DATE CHECKRESULT, ECGDATA, ECGIMG, RUTIMG, ROW_ID
仔细查找发现DISABLED_DATE和CHECKRESULT这两个字段之间缺少个逗号“,”。加上后重新启动项目后,终于该字段的值能正常显示出来了。
原来,我的映射文件是采用mybatis插件反向生成的,在生成过程中,由于CHECKRESULT, ECGDATA, ECGIMG, RUTIMG这几个字段所占空间比较大,
mybatis插件自动将这几个字段单独生成一个实体类,在映射文件这边也进行了拆分,分别是:
<sql id="Base_Column_List" >
ID,ARCHIVEID,.........DUNS,DISABLED_DATE,
</sql>
和
<sql id="Blob_Column_List" >
CHECKRESULT, ECGDATA, ECGIMG, RUTIMG
</sql>
查询接口的SQL是这样的:
select
<include refid="Base_Column_List"/>
<include refid="Blob_Column_List"/>
from table
所以最后生成去数据库查询SQL语句就变成了DISABLED_BY, DUNS, DISABLED_DATE CHECKRESULT, ECGDATA, ECGIMG, RUTIMG, ROW_ID,但mybatis并没有
检查出该错误,查询时也未报异常,但就是查询不出本来有值的字段的值。
经历过此事,以后凡涉及到SQL分两部分写的,上一个SQL最后一个字段后面要加上逗号。