本文内容来自尚硅谷
使用方式
参数位置支持的属性
–javaType、jdbcType、mode、numericScale、 resultMap、typeHandler、jdbcTypeName、expression
这里为可能为空的列名指定jdbcType类型。mybatis连接oracle数据库时,当入参对象为null时mybatis默认传给数据库的值不是null而是other则执行时会报错(使用mysql是不会报错的)
junit
public void test03() throws IOException{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Employee employee = new Employee(null, "jerry4",null, "1");
mapper.addEmp(employee);
System.out.println(employee.getId());
openSession.commit();
}finally{
openSession.close();
}
}
dao
public Long addEmp(Employee employee);
xml
<insert id="addEmp" databaseId="oracle">
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
select EMPLOYEES_SEQ.nextval from dual
</selectKey>
insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)
values(#{id},#{lastName},#{email})
</insert>
此时连接oracle时回报语法错误。
xml应该如下写法
<insert id="addEmp" databaseId="oracle">
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
select EMPLOYEES_SEQ.nextval from dual
</selectKey>
insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)
values(#{id},#{lastName},#{email ,jdbcType=NULL})
</insert>
这就是jdbctype的使用实例。意思是当email值为null时将把值设置成null而不是other
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: