在我的后台系統中,今天需要使用到存儲過程。存儲過程還真沒寫過,今天就寫了個存儲過程。使用在后台中。
其實這個接口功能 是涉及幾張表的修改,刪除,新增的。就寫個一個存儲過程。
存儲過程:
1 CREATE PROCEDURE `sp_combine_admin_group`(IN `group_id1` int(11), IN `group_id2` int(11),IN `admin_user_id` int(11),IN `group_name` varchar(64),IN `description` varchar(1024), out `t_error` INT(11)) 2 BEGIN 3 DECLARE new_group_id int(11); 4 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=0; 5 SET t_error = 1; 6 START TRANSACTION; 7 INSERT INTO admin_group (`group_name`,`description`) values ( group_name,description); 8 SET new_group_id =LAST_INSERT_ID(); 9 UPDATE group_special_power SET group_id= new_group_id where group_id =group_id1 or group_id= group_id2; 10 UPDATE group_menu_power SET group_id= new_group_id where group_id =group_id1 or group_id= group_id2; 11 UPDATE group_hospital_power SET group_id= new_group_id where group_id =group_id1 or group_id= group_id2; 12 UPDATE admin_user SET is_admin=0 , admin_group_id=new_group_id where admin_group_id =group_id1 or admin_group_id= group_id2; 13 UPDATE admin_user SET is_admin=1 where id=admin_user_id; 14 DELETE FROM admin_group where id =group_id1 or id= group_id2; 15 IF t_error = 0 THEN 16 ROLLBACK; 17 ELSE 18 COMMIT; 19 END IF; 20 END;
--Mapper.xml文件調用存儲過程
1 <insert id="insertAdminGroupCombine" parameterType="org.system.entity.admin.AdminGroup" useGeneratedKeys="true" keyColumn="id" statementType="CALLABLE" > 2 {call sp_combine_admin_group( 3 #{group_id1,jdbcType=INTEGER,mode=IN}, 4 #{group_id2,jdbcType=INTEGER,mode=IN}, 5 #{admin_user_id,jdbcType=INTEGER,mode=IN}, 6 #{group_name,jdbcType=VARCHAR,mode=IN}, 7 #{description,jdbcType=VARCHAR,mode=IN}, 8 #{t_error,jdbcType=INTEGER,mode=OUT})} 9 </insert>