对于我这种只有实习经验的小菜鸡,写项目前,很少会主动的去在SQL中使用到索引,即使自己知道加索引对于数据量大时会有好处,但是还是会忘记。今天,我在修改一个bug。该bug就是将使用name字段查询的sql改成使用id查询,并且前端也需要修改。
后端接口:
后端接口需要传入一个json格式的实体类对象,下面是开始使用name字段查询的实体类。
@ApiModelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startTime;
@ApiModelProperty(value = "结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endTime;
@ApiModelProperty(value = "科室类型")
private String department;
@ApiModelProperty(value = "科室对应的医生")
private String doctor;
?需要修改为使用id字段进行查询,如下实体类
@ApiModelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startTime;
@ApiModelProperty(value = "结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endTime;
@ApiModelProperty(value = "科室类型")
private Long departmentId;
@ApiModelProperty(value = "科室对应的医生")
private Long doctorId;
?然后我重新编写了mapper.xml文件中的sql语句,接着准备使用postman进行测试。因为postman会保留之前的测试样例,所以在postman的json数据中的字段还是保留了使用name请求的。最后点击send,我心里向肯定不会有数据出现的。结果啪啪的打脸了,反而有很多数据。
?
?当时,我就想,那就说明是springboot自动约定好的,和请求参数中的实体类参数不匹配,那么实体类参数的字段值就为默认的。为了验证这一想法,我就进行了debug测试,结果和我预想的一样。
?
好了,我的分享结束了。其实是一个简单的问题,但是往往像我这样的菜鸡容易忽略。大家有什么好办法解决的?除了在业务逻辑层进行判断。