最近在使用mybatis时,遇到了一个问题就是,使用char类型字段作为查询条件时一直都查不出数据,其他类型的则可以。
使用的数据库是oracle,查询条件字段类型是char(50),java代码对应的是String类型。
后来经过排查,是由于在oracle中,char类型字段,如果内容长度不够,会自动以空格方式补足长度。如字段 name char(5),若值为123,那么oracle会自动用空格补足长度,最终值为123。
select * from data where trim(data.name)=#{name} 可以查到数据
select * from data where data.name='${name}' 可以查到数据
select * from data where data.name=#{name} 查不到数据!!!!
参考链接:https://blog.youkuaiyun.com/gnail_oug/article/details/77163424