mybatisplus采坑,basemapper中selectList的类型校验的锅a

/ 默认分类 / 0 条评论 / 876浏览

mybatisplus采坑,basemapper中selectList的类型校验的锅

public class Model
{
String name;

String title;

Date time;
}
@Mapper
public interface ModelMapper extends BaseMapper<Model> {

}
return modelMapper.selectList(null);
SELECT name,time,tile FROM t_model 
org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column  from result set.  Cause: java.sql.SQLException: Bad format for Timestamp '名字' in column 4.
; Bad format for Timestamp '名字' in column 4.; nested exception is java.sql.SQLException: Bad format for Timestamp '名字' in column 4.

mp在使用模型映射的时候会先按照sql查询的字段的顺序填充到DO中,这一步只是在进行类型的校验,如果发现类型对不上就会直接报错上面的信息,上面的报错信息指出,在将String字符串这个'名字'这个值放入Date类型的time中的时候出现了异常,所以如果我们的DO的字段的顺序改一下像下面这样

public class Model
{
String name;

Date time;

String title;
}

这样对应的查询sql的第二个字段的类型就是一样的,都是时间类型,这样就可以在类型数据填充的时候通过,另外需要注意的是,你可能会说,那这样,如果我们将name属性和title属性替换,那么查询的结果也是不准确的了??其实不是这样,只有当类型不同的时候才会出现这样的问题

这里我使用的mp版本是3.0.5 其他版本不知道是否会出现这样的问题,这里只是记录一下,如果大家有什么不同的看法可以在下面给我留言