一、简介
有的时候,我们不方便自己写SQL,而是只能调用别人提供的存储过程,那如何使用mybatis调用存储过程呢?
二、示例步骤(MySQL)
2.1 准备一张表
DROP TABLE IF EXISTS cus_device;
CREATE TABLE cus_device (
device_sn varchar(20) NOT NULL COMMENT '设备编号',
device_cat_id int(1) DEFAULT NULL COMMENT '设备类型',
device_name varchar(64) DEFAULT NULL COMMENT '设备名称',
device_type varchar(64) DEFAULT NULL COMMENT '设备型号',
PRIMARY KEY (device_sn)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1
2
3
4
5
6
7
8
DROPTABLEIFEXISTScus_device;
CREATETABLEcus_device(
device_snvarchar(20)NOTNULLCOMMENT'设备编号',
device_cat_idint(1)DEFAULTNULLCOMMENT'设备类型',
device_namevarchar(64)DEFAULTNULLCOMMENT'设备名称',
device_typevarchar(64)DEFAULTNULLCOMMENT'设备型号',
PRIMARYKEY(device_sn)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
2.2 准备一个存储过程
以设备的名称为输入参数,以统计到设备的总数为输出参数
DROP PROCEDURE IF EXISTS countDevicesName;
DELIMITER ;;
CREATE PROCEDURE countDevicesName(IN dName VARCHAR(12),OUT deviceCount INT)
BEGIN
SELECT COUNT(*) INTO deviceCount FROM cus_device WHERE device_name = dName;
END
;;
DELIMITER ;
1
2
3
4
5
6
7
8
9
DROPPROCEDUREIFEXISTScountDevicesName;
DELIMITER;;
CREATEPROCEDUREcountDevicesName(INdNameVARCHAR(12),OUTdeviceCountINT)
BEGIN
SELECTCOUNT(*)INTOdeviceCountFROMcus_deviceWHEREdevice_name=dName;
END