本次任务完成时间:2020年5月8日
开发工具与关键技术:Eclipse、Java
一、下面是在查询数据的时候,Console报的一个错,如下图:
总的说,就是Could not set property ‘xxx’ of 'class ‘xxx’ with value ‘xxx’,报这个错的原因是因为我自己自定义的一个VO,因为VO里的某些字段,如时间的字段在VO定义的数据类型是String,而不是DateTime。那么问题就来了,在mapping中时间字段是在BaseResultMap中,其数据类型是TIMESTAMP,自定义的VO即使继承BaseResultMap还是会报上面的那个错。
解决办法:1、把那个报错的字段复制到自定义的resultMap,然后继承BaseResultMap
2、把VO中的所有字段在mapping的XML文件重新定义resultMap,不用再继承
BaseResultMap,如图:
这两种都可以解决,圈出的是有报错的字段
同时也要注意property所对应的值要和实体类的字段保持一致,否则可能也会出错,还有就是Vo的字段一定要和Mapping中xxx.XML的字段一样,否则会报缺少属性
2、在SSM中经常会遇到一些需求那就是根据下拉框的值来筛选出数据,可能这并不是很难实现,但是对于SSM并还是很熟悉的时候,就遇到了一个坑。
当时在mapping的XML文件中写sql语句,写条件查询的时候,刚开始并没有判断状态ID是否大于0,或者其它的条件是否为空,就直接写了,但是没有报错,也可以根据条件筛选出结果,就是初始化数据的时候,没有数据显示,只能通过筛选条件的时候,才能出现数据,当时很懵,不知道为什么初始化数据的时候,数据条数显示为0条。后来,才知道根据条件筛选数据要加上判断,否则会初始化不了数据,如下图:
原因:因为当你没有在SQL语句进行条件判断,在初始化数据的时候,那么这时候当其执行的时候,条件为空时,其执行到条件的时候,不会跳出条件,而是继续执行,全部的条件拼接起来执行,所以查询出的数据就会显示0条,因为全部条件拼接起来查询,并没有这条数据。
下面的效果图是加了条件判断查询的数据,这时初始化数据就可以出来了: