⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userimpl.java

📁 这是一款最新的野蔷薇论坛源码,有需要的朋友可以尽情下载
💻 JAVA
字号:
/* 
 * Created on 2006-2-27
 * Last modified on 2007-9-8
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.dao.hibernate.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.yeqiangwei.club.dao.UserDAO;
import com.yeqiangwei.club.dao.hibernate.ConnectionProvider;
import com.yeqiangwei.club.dao.hibernate.support.HibernateFacade;
import com.yeqiangwei.club.dao.hibernate.support.HibernateProvider;
import com.yeqiangwei.club.dao.hibernate.support.HibernateUserFacade;
import com.yeqiangwei.club.dao.model.User;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.util.Validator;

/**
 * DAO层事务处理上移至service层
 * @author yeqiangwei.com
 */
public class UserImpl implements UserDAO{
	
	private static final Logger logger = Logger.getLogger(UserImpl.class);
	
	private static final String FIND_USERID = "from User where userId=?";
	
	private static final String FIND_USERNAME = "from User where userName=?";
	
	private static final String FIND_USERNAME_PASSWORD = "from User where userName=? and password=?";
	
	private static final String FIND_USERID_PASSWORD = "from User where userId=? and password=?";
	
	private static final String FIND_EMAILADDRESS = "from User where emailAddress=?";
	
	private static final String FIND_ALL = "form User order by userId desc ";
	
	private static final String COUNT_ALL = "select count(userId) form User";
	
	private static final String UPDATE_ISINDEXED_USERID = "update User set isIndexed=? where userId=?";
	
	private HibernateProvider<User> getHibernateProvider(){
		if(ConnectionProvider.whichConnection==0){
			logger.info("HibernateFacade...");
			return new HibernateFacade<User>();
		}else{
			logger.info("HibernateUserFacade...");
			return new HibernateUserFacade<User>();
		}
	}
	
	public int updateIsIndexedByUserId(int userId, boolean isIndexed){
		HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
		hibernateProvider.createQuery(UPDATE_ISINDEXED_USERID);
		hibernateProvider.setBoolean(0,isIndexed);
		hibernateProvider.setInt(1,userId);
		return hibernateProvider.executeUpdate();
	}
	
	public User create(User user) {
		HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
        return hibernateProvider.save(user);
	}
	
	
	public User update(User item) {
		HibernateProvider<User> hibernateProvider = this.getHibernateProvider();
        return hibernateProvider.update(item);
	}

	public int delete(User user) {
        StringBuffer hql = new StringBuffer();
        hql.append("delete User where userId=?");
        HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
        hibernateProvider.createQuery(hql);
        hibernateProvider.setInt("userId",user.getUserId());
		return hibernateProvider.executeUpdate();
	}

	public User findById(int userId) {
    	HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
    	hibernateProvider.createQuery(FIND_USERID);
    	hibernateProvider.setInt(0, userId);
    	hibernateProvider.setCacheable(true); 
    	hibernateProvider.setMaxResults(1);
        return hibernateProvider.uniqueResult();
	}

	public User findByUserName(String userName) {
    	HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
    	hibernateProvider.createQuery(FIND_USERNAME);
    	hibernateProvider.setString(0, userName);
    	hibernateProvider.setCacheable(true); 
    	hibernateProvider.setMaxResults(1);
        return hibernateProvider.uniqueResult();
	}

	public User findByUserNameAndPassword(String userName, String password) {
    	HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
    	hibernateProvider.createQuery(FIND_USERNAME_PASSWORD);
    	hibernateProvider.setString(0, userName);
    	hibernateProvider.setString(1, password);
    	hibernateProvider.setMaxResults(1);
        return hibernateProvider.uniqueResult();
	}
	
	public User findByUserIdAndPassword(int userId, String password) {
    	HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
    	hibernateProvider.createQuery(FIND_USERID_PASSWORD);
    	hibernateProvider.setInt(0, userId);
    	hibernateProvider.setString(1, password);
    	hibernateProvider.setMaxResults(1);
        return hibernateProvider.uniqueResult();
	}

	public User findByEmailAddress(String emailAddress) {
    	HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
    	hibernateProvider.createQuery(FIND_EMAILADDRESS);
    	hibernateProvider.setString(0,emailAddress);
    	hibernateProvider.setMaxResults(1);
        return hibernateProvider.uniqueResult();
	}
	
	public List findAll(UserParameter param) {
		List<User> list = null;
        int startRow = param.getPagination().getStartRow();
        int endRow  = param.getPagination().getEndRow();
        HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
        hibernateProvider.createQuery(FIND_ALL);
        hibernateProvider.setFirstResult(startRow);
        hibernateProvider.setMaxResults(endRow);
    	list = hibernateProvider.executeQuery();  
		return list;
	}


	public long countAll(UserParameter param) {
		HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
        hibernateProvider.createQuery(COUNT_ALL);
        hibernateProvider.setCacheable(true);
		return hibernateProvider.resultTotal();
	}
	
	private String getOrderBy(UserParameter param){
		StringBuffer hql = new StringBuffer();
        if(Validator.isEmpty(param.getOrderBy())){
        	hql.append(" order by userId desc");
        }
        else if(param.getOrderBy().byteValue()==0){
            hql.append(" order by userId desc");
        }
        else if(param.getOrderBy().byteValue()==1){
        	hql.append(" order by userLoginTimes desc");
        }
        else if(param.getOrderBy().byteValue()==2){
        	hql.append(" order by userTopicCount desc");
        }
        else if(param.getOrderBy().byteValue()==3){
        	hql.append(" order by userReCount desc");
        }
        else if(param.getOrderBy().byteValue()==4){
        	hql.append(" order by userMark desc");
        }
        else if(param.getOrderBy().byteValue()==5){
        	hql.append(" order by userCredit desc");
        }
        else if(param.getOrderBy().byteValue()==6){
        	hql.append(" order by userMoney desc");
        }
        else if(param.getOrderBy().byteValue()==7){
        	hql.append(" order by lastLoginDateTime desc");
        }
        return hql.toString();
	}
	
	private String getWhere(UserParameter param){
		StringBuffer hql = new StringBuffer();
        if(!Validator.isEmpty(param.getSex())){
            hql.append(" and userSex="+ param.getSex().byteValue() +"");
        }
        if(!Validator.isEmpty(param.getRegIp())){
            hql.append(" and (regIp like '%"+ param.getRegIp() +"%'");
            hql.append(" or lastLoginIp like '%"+ param.getRegIp() +"%')");
        }
        if(!Validator.isEmpty(param.getUserName())){
            hql.append(" and userName like ? ");
        }
        if(!Validator.isEmpty(param.getAreaId())){
        	hql.append(" and userAreaId=");
        	hql.append(param.getAreaId());
        }
        if(!Validator.isEmpty(param.getLastLoginTime())){
        	hql.append(" and lastLoginDateTime>");
        	hql.append(param.getLastLoginTime());
        }
        return hql.toString();
	}
	
	public List<User> findByParameter(UserParameter param)
	{		
		List<User> list = null;
		HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
		Connection con = hibernateProvider.getSession().connection();
		PreparedStatement pps = null;
		ResultSet rs = null;
        StringBuffer sql = new StringBuffer();
		if(param.getPage()>1){
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * from (select *, ROW_NUMBER() OVER (");
			sql.append(this.getOrderBy(param));
			sql.append(") AS RowNo FROM Users where userId>0 ");
			sql.append(this.getWhere(param));
			sql.append(") AS A where RowNo>");
			sql.append(param.getRows()*(param.getPage()-1));
		}else{
			sql.append("SELECT TOP ");
			sql.append(param.getRows());
			sql.append(" * FROM Users WHERE userId>0 ");
			sql.append(this.getWhere(param));
			sql.append(this.getOrderBy(param));
		}
		logger.debug(sql);
		try {
			pps = con.prepareStatement(sql.toString());
	    	if(!Validator.isEmpty(param.getUserName())){
	    		pps.setString(1, "%"+ param.getUserName() +"%");
	    	}
			rs = pps.executeQuery();
			list = new ArrayList<User>();
			while(rs.next()){
				User item = new User();
				item.setUserId(rs.getInt("userId"));
				item.setUserName(rs.getString("userName"));
				item.setPassword(rs.getString("password"));
				item.setSex(rs.getByte("sex"));
				item.setAnswer(rs.getString("answer"));
				item.setArea(rs.getString("area"));
				item.setAreaId(rs.getInt("areaId"));
				item.setBirthday(rs.getString("birthday"));
				item.setCity(rs.getString("city"));
				item.setCredit(rs.getDouble("credit"));
				item.setDeposit(rs.getDouble("deposit"));
				item.setEmailAddress(rs.getString("emailAddress"));
				item.setFileUploadIsOpen(rs.getByte("fileUploadIsOpen"));
				item.setFileUploadMaxSize(rs.getLong("fileUploadMaxSize"));
				item.setFileUploadUseSize(rs.getLong("fileUploadUseSize"));
				item.setGroupId(rs.getInt("groupId"));
				item.setHomepage(rs.getString("homepage"));
				item.setIntro(rs.getString("intro"));
				item.setLastLoginDateTime(rs.getLong("lastLoginDateTime"));
				item.setLastLoginIp(rs.getString("lastLoginIp"));
				item.setLoginTimes(rs.getInt("loginTimes"));
				item.setMoney(rs.getDouble("money"));
				item.setNoAllowed(rs.getByte("noAllowed"));
				item.setPenName(rs.getString("penName"));
				item.setPhoto(rs.getString("photo"));
				item.setQuestion(rs.getString("question"));
				item.setRegDateTime(rs.getLong("regDateTime"));
				item.setRegIp(rs.getString("regIp"));
				item.setRegisterNumber(rs.getString("registerNumber"));
				item.setReplys(rs.getInt("replys"));
				item.setScore(rs.getDouble("score"));
				item.setSignatures(rs.getString("signatures"));
				item.setTopics(rs.getInt("topics"));
				item.setWork(rs.getString("work"));				
				list.add(item);
			}
		} catch (SQLException e) {
			logger.error(e.toString());
		}
		return list;
	}
	
	/*
	public List<User> findByParameter(UserParameter param)
	{		
		List<User> list = null;
        int startRow = param.getPagination().getStartRow();
        int endRow  = param.getPagination().getEndRow();
        StringBuffer hql = new StringBuffer();
        hql.append("from User where userId>0");
        hql.append(this.where(param));
        hql.append(this.orderBy(param));
        HibernateFacade<User> facade = new HibernateFacade<User>();
    	facade.createQuery(hql);
    	if(!Validator.isEmpty(param.getUserName())){
    		facade.setString(0, "%"+ param.getUserName() +"%");
    	}
    	facade.setFirstResult(startRow);
        facade.setMaxResults(endRow);
        list = facade.executeQuery();  
		return list;
	}
	*/

	public long countByParameter(UserParameter param) {
        StringBuffer hql = new StringBuffer();
        hql.append("select count(userId) from User where userId>0");
        if(!Validator.isEmpty(param.getSex())){
            hql.append(" and userSex="+ param.getSex().byteValue() +"");
        }
        if(!Validator.isEmpty(param.getLastLoginTime())){
        	hql.append(" and lastLoginDateTime>");
        	hql.append(param.getLastLoginTime());
        }
        if(!Validator.isEmpty(param.getRegIp())){
            hql.append(" and (regIp like '%"+ param.getRegIp() +"%'");
            hql.append(" or lastLoginIp like '%"+ param.getRegIp() +"%')");
        }
        if(!Validator.isEmpty(param.getUserName())){
            hql.append(" and userName like ?");
        }
        if(!Validator.isEmpty(param.getAreaId())){
        	hql.append(" and userAreaId=");
        	hql.append(param.getAreaId());
        }          

        HibernateProvider<User> hibernateProvider= this.getHibernateProvider();
        hibernateProvider.createQuery(hql);
    	hibernateProvider.setCacheable(true);
    	if(!Validator.isEmpty(param.getUserName())){
    		hibernateProvider.setString(0, "%"+ param.getUserName() +"%");
    	}
		return hibernateProvider.resultTotal();
	}

	public int delete(List<Integer> ids) {
		return 0;
	}


	/*
	public static void main(String[] args){

		com.yeqiangwei.club.dao.hibernate.ConnectionManager.init();
		UserImpl u = new UserImpl();
		User user = new User();
		user.setUserId(20);
		user.setUserName("aaaa");
		com.yeqiangwei.club.dao.tran.TransactionUtils tran = new com.yeqiangwei.club.dao.tran.TransactionUtils();
		tran.beginTransaction();
		u.update(user);


		tran.commit();
	
	}
	*/

	/* 剔出重复的用户名 */
	/*
	private void duplicateUserName(String userName){
		User cui = null;
		int userId = 0;
		StringBuffer hql = new StringBuffer();
		hql.append("from User where userName=? order by userId");
		Session session = ConnectionManager.getSession();
		try{
			Query query = session.createQuery(hql.toString()).setString(0, userName);
			query.setMaxResults(1);
			cui = (User) query.uniqueResult();
			if(cui!=null){
				userId = cui.getUserId();
				Transaction tran = session.beginTransaction();
				String s = "delete from User where userId>?";
				Query del = session.createQuery(s).setInteger(0, userId);
				int c = del.executeUpdate();
				tran.commit();
				logger.error(c+" 条重复用户名记录被删除:"+userName+"|"+userId);
			}
		}catch(HibernateException e){
			logger.error(e.toString());
		}
	}
	*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -