如需对statementType 进一步了解 参考博文statementType:STATEMENT,PREPARED 或 CALLABLE
- 在使用 statementType=“CALLABLE” 做数据插入时报错,
org.springframework.dao.TransientDataAccessResourceException:
### Error querying database. Cause: java.sql.SQLException: Unable to retrieve metadata for procedure.
### The error may exist in org/minp/vhr/mapper/DepartmentMapper.xml
### The error may involve org.minp.vhr.mapper.DepartmentMapper.addDep
### The error occurred while executing a query
### SQL: call addDep(?, ?, ?, ?, ?)
### Cause: java.sql.SQLException: Unable to retrieve metadata for procedure.
; Unable to retrieve metadata for procedure.; nested exception is java.sql.SQLException: Unable to retrieve metadata for procedure.
直接贴出修改前后的sql
修改前
<select id="deleteDepById" statementType="CALLABLE">
call
deleteDep(#{id,mode=IN,jdbcType=INTEGER}, #{result,mode=OUT,jdbcType=INTEGER})
</select>
修改后(可正常执行)
<select id="deleteDepById" statementType="CALLABLE">
call deleteDep(#{id,mode=IN,jdbcType=INTEGER}, #{result,mode=OUT,jdbcType=INTEGER})
</select>
对比前后,就是 call 和 方法名要紧跟其后