欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

一個XOA的編程過程

系統 2115 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條評論
主站蜘蛛池模板: 久久久国产这里有的是精品 | 在线视频一区二区 | 国产成人啪精品视频免费网站软件 | 春宵福利网站在线观看 | 羞羞色院91蜜桃在线观看 | 日韩在线短视频 | 亚洲国产精品一区二区久久 | 亚洲在线观看 | 久久av高清 | 亚洲日韩视频免费观看 | 日本特级黄色录像 | 日本不良网站 | 午夜视频在线免费观看 | 一区二区三区国产在线 | 丁香六月综合 | 国产精品国产精品国产专区不卡 | 欧美成人伊人十综合色 | 五月婷婷 六月丁香 | 天天夜夜操操 | 九九九视频 | 日本一道一区二区免费看 | 国产乱偷国产偷高清 | 久久久.com | 成人在线免费观看 | 日韩欧美一区在线观看 | 欧美大香线蕉线伊人久久 | 成人性爱视频在线观看 | 奇米亚洲 | 欧美午夜视频 | 日日操夜夜操免费视频 | 日韩电影在线看 | 做羞羞视频 | 老色鬼久久AV综合亚洲健身 | 99久久免费费视频在线观看 | 亚洲免费视频一区 | 五月婷婷激情六月 | 最近最新中文字幕 | 久久久久久国产精品 | 欧美日韩亚洲一区 | 亚洲 中文 欧美 日韩 在线观看 | xxx视频 |