亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

一個XOA的編程過程

系統 2040 0
1、數據表結構
user_access_flow
一個XOA的編程過程
2、renren-wap-fuxi-model
UserPlayFlowResult.java
    
/**
 * $Id$
 * Copyright 2009-2010 Oak Pacific Interactive. All rights reserved.
 */
package com.xiaonei.wap.fuxi.model;

import java.io.Serializable;


/**
 * 
 * @author <a href="mailto:qiao.wang@renren-inc.com">王僑</a>
 * @createTime 2011-7-20下午07:27:51
 */
public class UserAccessFlow implements Serializable {

	private static final long serialVersionUID = -3660276636695964258L;

	private long id;
	
	/** 用戶Id */
	private int userId;
	
	/** 訪問狀態0:舊應用,1:新應用 */
	private int access;
	
	/** 最后訪問時間 */
	private long addTime;

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @return the userId
	 */
	public int getUserId() {
		return userId;
	}

	/**
	 * @param userId the userId to set
	 */
	public void setUserId(int userId) {
		this.userId = userId;
	}

	/**
	 * @return the access
	 */
	public int getAccess() {
		return access;
	}

	/**
	 * @param access the access to set
	 */
	public void setAccess(int access) {
		this.access = access;
	}

	/**
	 * @return the addTime
	 */
	public long getAddTime() {
		return addTime;
	}

	/**
	 * @param addTime the addTime to set
	 */
	public void setAddTime(long addTime) {
		this.addTime = addTime;
	}
	
	
}


  


3、renren-wap-fuxi-service
UserAccessFlowEntity.java

    
/**
 * $Id$
 * Copyright 2009-2010 Oak Pacific Interactive. All rights reserved.
 */
package com.xiaonei.wap.fuxi.entity;

import java.util.Date;

/**
 * 
 * @author <a href="mailto:qiao.wang@renren-inc.com">王僑</a>
 * @createTime 2011-7-20下午07:43:06
 */
public class UserAccessFlowEntity {
	
	private long id;
	
	private int userId;
	
	private int access;
	
	private Date addTime;

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * @return the userId
	 */
	public int getUserId() {
		return userId;
	}

	/**
	 * @param userId the userId to set
	 */
	public void setUserId(int userId) {
		this.userId = userId;
	}

	/**
	 * @return the access
	 */
	public int getAccess() {
		return access;
	}

	/**
	 * @param access the access to set
	 */
	public void setAccess(int access) {
		this.access = access;
	}

	/**
	 * @return the addTime
	 */
	public Date getAddTime() {
		return addTime;
	}

	/**
	 * @param addTime the addTime to set
	 */
	public void setAddTime(Date addTime) {
		this.addTime = addTime;
	}
	
	

}


  


4、IUserAccessFlowDAO.java
注釋:將 {@link ReturnGeneratedKeys} 聲明在insert語句的方法上,表示返回的是插入的id
    
/**
 * $Id$
 * Copyright 2009-2010 Oak Pacific Interactive. All rights reserved.
 */
package com.xiaonei.wap.fuxi.dao;

import net.paoding.rose.jade.annotation.DAO;
import net.paoding.rose.jade.annotation.ReturnGeneratedKeys;
import net.paoding.rose.jade.annotation.SQL;
import net.paoding.rose.jade.annotation.SQLParam;

import com.xiaonei.wap.fuxi.entity.UserAccessFlowEntity;

/**
 * 
 * @author <a href="mailto:qiao.wang@renren-inc.com">王僑</a>
 * @createTime 2011-7-20下午07:45:48
 */
@DAO(catalog = "user_fuxi")
public interface IUserAccessFlowDAO {
	/**
	 * 保存記錄
	 * @param userAccessFlow
	 * @return
	 */
	@ReturnGeneratedKeys
	@SQL("INSERT INTO user_access_flow(user_id, access, add_time) VALUES(:userAccessFlow.userId, :userAccessFlow.access, :userAccessFlow.addTime)")
	public long create(@SQLParam("userAccessFlow") UserAccessFlowEntity userAccessFlow);
	
	/**
	 * 根據user_id 更新user_access_flow
	 * @param userAccessFlow
	 * @return
	 */
	@SQL("UPDATE user_access_flow SET access=:userAccessFlow.access, add_time=:userAccessFlow.addTime " +
		 "WHERE user_id=:userAccessFlow.userId ")
	public int update(@SQLParam("userAccessFlow") UserAccessFlowEntity userAccessFlow);
	
	/**
	 * 根據userId 取 訪問信息
	 * @param userId
	 * @return
	 */
	@SQL("select a.user_id, a.access, a.add_time from user_access_flow a where a.user_id = :userId ")
	public UserAccessFlowEntity find(@SQLParam("userId") int userId);
	
}


  


5、IUserAccessService
    
/**
 * $Id$
 * Copyright 2009-2010 Oak Pacific Interactive. All rights reserved.
 */
package com.xiaonei.wap.fuxi.service;

import com.xiaonei.wap.fuxi.entity.UserAccessFlowEntity;
import com.xiaonei.wap.fuxi.model.UserAccessFlow;

/**
 * 
 * @author <a href="mailto:qiao.wang@renren-inc.com">王僑</a>
 * @createTime 2011-7-21下午02:29:42
 */
public interface IUserAccessService {

	/**
	 * 獲取用戶訪問信息
	 * @param userId
	 * @return
	 */
	public UserAccessFlow getUserAccessFlow(int userId);
	
	/**
	 * 保存用戶訪問信息
	 * @param userAccessFlow
	 * @return
	 */
	public long creatUserAccessFlow(UserAccessFlowEntity userAccessFlow);
	
	/**
	 * 更新用戶訪問信息
	 * @param userAccessFlow
	 * @return
	 */
	public int updateUserAccessFlow(UserAccessFlowEntity userAccessFlow);
}


  


6、實現
    
/**
 * $Id$
 * Copyright 2009-2010 Oak Pacific Interactive. All rights reserved.
 */
package com.xiaonei.wap.fuxi.service.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;

import com.renren.xcache.XCache;
import com.xiaonei.wap.framework.cache.XCacheManager2;
import com.xiaonei.wap.fuxi.dao.IUserAccessFlowDAO;
import com.xiaonei.wap.fuxi.entity.UserAccessFlowEntity;
import com.xiaonei.wap.fuxi.model.UserAccessFlow;
import com.xiaonei.wap.fuxi.service.IUserAccessService;

/**
 * 
 * @author <a href="mailto:qiao.wang@renren-inc.com">王僑</a>
 * @createTime 2011-7-21下午02:37:12
 */
public class UserAccessServiceImpl extends BaseBusinessService implements IUserAccessService,
		InitializingBean{

	/**
     * Logger for this class
     */
    private final Log logger = LogFactory.getLog(UserAccessServiceImpl.class);
    
	private static final String CACHE_TYPE_USER_ACCESS_FLOW = "user_access_flow";
	
	// user access緩存時間,默認1天
	private int userAccessDefaultCacheTime = XCache.EXPIRE_DAY * 1;
	
	private IUserAccessFlowDAO userAccessFlowDAO;
	
	/**
	 * 基礎方法,根據 userId獲取訪問基本信息
	 * 
	 * @param userId
	 * @return
	 */
	@Override
	public UserAccessFlow getUserAccessFlow(int userId) {
		if (userId <0){
			return null;
		}
		XCacheManager2 cache = XCacheManager2.getCacheManager(CACHE_TYPE_USER_ACCESS_FLOW);
		UserAccessFlow userAccessFlow = cache.get(String.valueOf(userId), UserAccessFlow.class);
		if (userAccessFlow == null){
			userAccessFlow = loadUserAccessFlowFromDb(userId);
		}
		return userAccessFlow;
	}

	/**
	 * 從db中取一條userAccessFlow,放入緩存
	 * @param userId
	 * @return
	 */
	private UserAccessFlow loadUserAccessFlowFromDb(int userId) {
		UserAccessFlowEntity userAccessFlow = userAccessFlowDAO.find(userId);
		UserAccessFlow userAccessFlowResult = null;
		String key = String.valueOf(userId);
		if(userAccessFlow != null) {
			//組裝user access model
			userAccessFlowResult = buildUserAccessFlow(userAccessFlow);
			if(userAccessFlowResult != null) {
				XCacheManager2 cache = XCacheManager2.getCacheManager(CACHE_TYPE_USER_ACCESS_FLOW);
				cache.save(key, userAccessFlowResult, UserAccessFlow.class, userAccessDefaultCacheTime);
			} else {
				logger.error("can't build user access for key:" + key);
			}
		} else {
			logger.error("can't find user access from db for key:" + key);
		}
		return userAccessFlowResult;
	}

	/**
	 * 對userAccessFlow進行包裝
	 * 
	 * @param userAccessFlow
	 * @param userAccessFlowResult
	 */
	private UserAccessFlow buildUserAccessFlow(UserAccessFlowEntity userAccessFlow) {
		if(userAccessFlow == null) {
			return null;
		}
		UserAccessFlow userAccessFlowResult = new UserAccessFlow();
		userAccessFlowResult.setId(userAccessFlow.getId());
		userAccessFlowResult.setUserId(userAccessFlow.getUserId());
		userAccessFlowResult.setAccess(userAccessFlow.getAccess());
		if (userAccessFlow.getAddTime() != null) {
			userAccessFlowResult.setAddTime(userAccessFlow.getAddTime().getTime());
		}
		
		return userAccessFlowResult;
	}

	@Override
	public long creatUserAccessFlow(UserAccessFlowEntity userAccessFlow) {
		long result = 0;
        try {
            result = userAccessFlowDAO.create(userAccessFlow);

        } catch (Exception e) {
            logger.error("creatUserAccessFlow error, userId:" + userAccessFlow.getUserId(), e);
            result = -1;
        }
        return result;
	}

	@Override
	public int updateUserAccessFlow(UserAccessFlowEntity userAccessFlow) {
		int result = 0;
        try {
            result = userAccessFlowDAO.update(userAccessFlow);

        } catch (Exception e) {
        	logger.error("updateUserAccessFlow error, userId:" + userAccessFlow.getUserId(), e);
            result = -1;
        }
        return result;
	}

	/**
	 * @param userAccessFlowDAO the userAccessFlowDAO to set
	 */
	public void setUserAccessFlowDAO(IUserAccessFlowDAO userAccessFlowDAO) {
		this.userAccessFlowDAO = userAccessFlowDAO;
	}

	@Override
	public void afterPropertiesSet() throws Exception {
		Assert.notNull(userAccessFlowDAO, "userAccessFlowDAO is required!");
		
	}

	
}


  

一個XOA的編程過程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日日摸夜夜添夜夜添毛片 | 四虎com | 狠色狠狠色狠狠狠色综合久久 | 国产99热在线观看 | 亚洲国产成人综合 | 久久这里有精品视频 | 99久久精品国产免看国产一区 | 国产精品成人免费视频99 | 一级特黄特色aa大片 | 色一情一欲一爱一乱 | 久久国产精品99久久久久久牛牛 | 国产综合视频在线 | 国产免费不卡v片在线观看 国产免费不卡视频 | 久久亚洲网 | 国产精品四虎在线观看免费 | 色噜噜狠狠狠狠色综合久一 | 国产片网址 | 日本老乱video| 综合7799亚洲伊人爱爱网 | 久久久久在线 | www.九色| 久久久久欧美精品 | 97在线观免费视频观看 | 四虎欧美永久在线精品免费 | 香蕉国产人午夜视频在线观看 | 99色视频 | 亚洲一区二区三区高清不卡 | 成人国产一区二区三区精品 | 豆国产96在线 | 亚洲 | 国产高清天干天天视频 | 伊人久久大香线焦综合四虎 | 我爱52avαv永久网站 | 综合久久久久久久 | 四虎黄色影视库 | 68久久久久欧美精品观看 | 成人国产在线观看 | 国产亚洲福利精品一区二区 | 亚洲国产欧美久久香综合 | 亚洲欧美bt | 亚洲欧美国产精品久久久 | 精品国产一区二区 |