关于如何调用存储过程,我在这里贴上用Mybatis调用的代码:
因为我传多个参数,所以我这里用map作为参数,传到xml的参数类型为map
Map<String,Integer> map=new HashMap<String,Integer>();
map.put("num", num);//所需号码数量
map.put("gid", indiana.getGid());//货品ID
map.put("bid", indiana.getBid());//商品ID
/* 生成夺宝码 */
indianaCodeService.saveCode(map);
然后xml文件里:
<select id="saveCode" statementType="CALLABLE" parameterType="map" >
{
call sp_saveCode(
#{num,jdbcType=INTEGER,mode=IN},
#{gid,jdbcType=INTEGER,mode=IN},
#{bid,jdbcType=INTEGER,mode=IN}
)
}
</select>
这里注明statementType="CALLABLE"表示调用存储过程,call后写你需要调用的存储过程的名字
DROP PROCEDURE IF EXISTS `sp_saveCode`;
CREATE DEFINER = `root`@`%` PROCEDURE `sp_saveCode`(IN num INT,in gid int,in bid int)
BEGIN
DECLARE i int;
DECLARE codes INT;
set i=1;
while i<=num do
SET codes=10000000+i;
insert into tindianacode(gid,bid,code,state) values(gid,bid,codes,0);
set i=i+1;
end while;
END;
这样就能再mybatis里调用你写的存储过程了