mybatis mapper调用mysql存储过程
mybatis版本:3.4.4
存储过程
1、mapper.xml文件中配置相关的sql语句。
<select id="callTest" statementType="CALLABLE" > { call hasResource( #{param1,mode=IN}, #{param2,mode=IN}, #{param3,mode=OUT,jdbcType=INTEGER} ) } </select>
注意:parameterMap已被舍弃,请直接在sql语句中定义传参类型。
注意:OUT参数必须指定jdbcType
2、定义mapper接口中的方法
void callTest(Map<String, Object> params);
注意:如果存储过程中有OUT参数,调用时的传参只能是Map类型,调用结束后从Map中根据OUT参数的名称获取返回的数据。如果没有OUT参数,可以使用@Param方式定义接口中的传参。
注意:在Mysql中,定义OUT参数为游标类型,好像很复杂,没找到相关资料。官网的存储过程文档特少,不知道是不是找错地方了。
注意:如果存储过程执行过程中有sql调用,可作为存储过程的执行结果返回,同基本的select定义类似,增加resultMap或resultType参数,mapper接口增加返回参数类型。
函数
mapper.xml配置
<select id="callTest" resultType="int" > select functionTest(#{params1}, #{param2}) from dual; </select>
mapper接口中的方法为基本方法传参和返回数据。