mysql存储过程收集贴

https://www.cnblogs.com/zhuzhuxuan/p/5845629.html ---基本类型知识

http://www.cnblogs.com/qiantuwuliang/archive/2010/03/17/1687946.html -- 简单存储过程

1、准备实体(请求和响应)

controller

@RequestMapping("/getMyTodayUserInfo")
	public ModelAndView getMyTodayUserInfo(Model model,UserMgrReq userMgrReq) throws HaBizException{
		ModelAndView mav = new ModelAndView();
		
		userMgrReq.setTimePeriod(TimePeriodTypes.TODAY);
		userMgrReq.setPartyId("12017120614185501");
		//查询数据
		List<UserMgrResp> userMgrRespList  = new ArrayList<UserMgrResp>();
		try {
			userMgrRespList  = userService.getGameUserInfo(userMgrReq);
			userMgrReq.setRows(userService.getGameUserInfoNum(userMgrReq));
		} catch (Exception e) {
			throw new HaBizException("查询用户出错");
		}
		model.addAttribute("userMgrReq", userMgrReq);
		model.addAttribute("userMgrRespList",userMgrRespList);*/
		
		List<UserMgrResp> userMgrRespList  = userService.getGameUserByPartyId(userMgrReq);
		if (null != userMgrRespList) {
			for (UserMgrResp userMgrResp : userMgrRespList) {
				System.out.println(userMgrResp.getPartyId());
			}
		}
		model.addAttribute("userMgrRespList",userMgrRespList);
		return new ModelAndView("/myUser/myTodayUser");
	}
service
List<UserMgrResp> getGameUserByPartyId(UserMgrReq userMgrReq);
@Override
	public List<UserMgrResp> getGameUserByPartyId(UserMgrReq userMgrReq) {  
        Map<String, Object> map = new HashMap<String, Object>();  
        map.put("partyId",userMgrReq.getPartyId());  
        map.put("timePeriod",userMgrReq.getTimePeriod());  
        return userMapper.getGameUserByPartyId(map);   
    }  
dao
List<UserMgrResp> getGameUserByPartyId(Map<String, Object> paramMap);
xml
<select id="getGameUserByPartyId" statementType="CALLABLE" resultType="UserMgrResp">  
        call pro_get_user(  
         #{partyId,jdbcType=VARCHAR,mode=IN},  
         #{timePeriod,jdbcType=INTEGER,mode=IN}  
        )  
    </select> 

存储过程

BEGIN
		DECLARE l_partyId VARCHAR(32);
		DECLARE l_userId BIGINT(10);
		DECLARE l_userName VARCHAR(64);
		DECLARE l_timePeriod TINYINT(1);
		DECLARE l_headImage VARCHAR(128);
		DECLARE l_amt INT(11);
		DECLARE l_rechargeAmt INT(11);
		DECLARE l_consumeAmt INT(11);
		DECLARE l_crtTime datetime;
		DECLARE l_t_crtTime datetime;
		DECLARE l_done INT(1) DEFAULT 0; 
		/* 获取代理商用户partyId */
		declare cur_partyId CURSOR FOR (SELECT DISTINCT a.partyId FROM ha_game_agreement ga
				INNER JOIN ha_agreement a ON a.id = ga.id WHERE ga.agentPartyId = p_partyId);
		/*设置游标退出标志*/
		DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1; 
		/*删除上次查询记录*/
		DELETE FROM ha_temp_agent_user where agentPartyId = p_partyId and timePeriod = p_timePeriod ;
		/*打开游标*/
		OPEN cur_partyId;
			/*循环遍历游标*/
			 REPEAT
				/*获取游标中单个值*/
				fetch cur_partyId into l_partyId;
				 /*判断是否需要结束*/
				 if not l_done then
					/*重新设置变量的初始值,防止错处后,被再次使用*/
					SET l_userName = NULL, l_crtTime = NULL, l_headImage = NULL, l_userId = NULL;
					/*获取用户的基本信息*/
					SELECT u.userName, u.crtTime, u.headImage, u.id 
					into l_userName,l_crtTime,l_headImage,l_userId
					FROM ha_party p
					INNER JOIN ha_user_party up ON up.partyId = p.partyId AND up.userType = 1
					INNER JOIN ha_user u ON u.id = up.userId AND u.`status` = 1
					WHERE p.`status` = 1 AND p.partyId = l_partyId;
					/* 解决游标循环失效*/
					SET l_done=0;
					/*如果用户为空值,进行过滤*/
				  IF !isnull(l_userId) then
						INSERT INTO ha_temp_agent_user(agentPartyId, partyId, userId, userName, 
							timePeriod, headImage, crtTime, t_crtTime)   
										 VALUES (p_partyId, l_partyId, l_userId,l_userName, p_timePeriod,
							l_headImage,l_crtTime,NOW());   
					end IF;
				end if;
				
			UNTIL l_done END REPEAT;   /* 结束循环*/
		close cur_partyId;    /* 关闭游标*/
		
		/*返回存储过程结果数据集*/
		SELECT tau.agentPartyId,tau.amt,tau.consumeAmt,tau.crtTime,tau.headImage,tau.partyId,
				tau.rechargeAmt,tau.timePeriod,tau.userId,tau.userName 
		from ha_temp_agent_user tau where tau.agentPartyId = p_partyId and tau.timePeriod = p_timePeriod;
         
	/*SELECT tau.*
		from ha_temp_agent_user tau where tau.agentPartyId = p_partyId and tau.timePeriod = p_timePeriod;*/
END
p_partyId和p_timePeriod 为入参


注意


发布了64 篇原创文章 · 获赞 9 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/eadela/article/details/78952569