oracle数据库Project表中的NAME字段是char类型
ProjectMapper.xml配置如下:
<select id="getProject" resultMap="BaseResultMap" parameterType="Java.lang.String" >
select
<include refid="Base_Column_List" />
from PROJECT
where NAME = #{name,jdbcType=CHAR}
</select>
ProjectMapper.java 中方法如下:
public Project getProject(String name);
测试的结果得到的Project对象总是null。
原来这种情况下char存储的时候没达到指定长度空出部分用空格填充。解决办法就是先去掉多余的空格。
修改如下:
<select id="getProject" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from PROJECT
where trim(NAME) = #{name,jdbcType=CHAR}
</select>
今天碰到一个很奇怪的问题,发现mybatis中对char与varchar的处理是不一样的,如果数据库中定义的是char类型则需要字符长短也一致才能查询到。