accountdaoimp.java

来自「用Hibernate开发的JiveJdon」· Java 代码 · 共 102 行

JAVA
102
字号
package com.jdon.jivejdon.dao.hibernate;

import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;

import com.jdon.controller.model.PageIterator;
import com.jdon.jivejdon.dao.AccountDao;
import com.jdon.jivejdon.dao.sql.AccountSSOSql;
import com.jdon.jivejdon.model.Account;
import com.jdon.persistence.DaoCRUD;
import com.jdon.persistence.hibernate.HibernateCRUDTemplate;
import com.jdon.persistence.hibernate.HibernateTemplate;

public class AccountDaoImp implements AccountDao {

	private final static Logger logger = Logger.getLogger(AccountDaoImp.class);
	private static final String LOAD_BY_USERNAME = "from Account where username = ?";
	private static final String LOAD_BY_EMAIL = "from Account where email = ?";


	private DaoCRUD daoCRUD;
	private AccountSSOSql accountSSOSql;
	
	public AccountDaoImp(DaoCRUD daoCRUD,AccountSSOSql accountSSOSql) {
		this.daoCRUD = daoCRUD;
		this.accountSSOSql = accountSSOSql;
	}

	public void createAccount(Account account) throws Exception {
		daoCRUD.insert(account);
		accountSSOSql.insertSSOServer(account);
	}

	public void deleteAccount(Account account) throws Exception {
		daoCRUD.delete(account);
		accountSSOSql.deleteSSOServer(account);

	}

	public void updateAccount(Account account) throws Exception {
		daoCRUD.update(account);
		accountSSOSql.updateSSOServer(account);
	}


	public PageIterator getAccounts(int start, int count) throws Exception {
		HibernateTemplate hibernateTemplate = ((HibernateCRUDTemplate)daoCRUD).getHibernateTemplate();
		hibernateTemplate.setCacheQueries(true);
		Iterator results = hibernateTemplate.find("select count(account) from Account account ")
		                   .iterator();
		Long allcount = new Long(0);
		while ( results.hasNext() ) {
			allcount = (Long) results.next();
		}

		hibernateTemplate.setFirstResult(start);
		hibernateTemplate.setMaxResults(count);
		List pageIds = hibernateTemplate.find("select account.userId from Account account " + "order by account.userId");
		hibernateTemplate.setFirstResult(0);
		hibernateTemplate.setMaxResults(0);
        return new PageIterator(allcount.intValue(), pageIds.toArray());
	}

	
	public Account getAccount(Long userId) {
		logger.debug(" get account " + userId);
		Account account = null;
         try {
        	 account = (Account)daoCRUD.loadById(Account.class, userId);
		} catch (Exception e) {
			e.printStackTrace();
		}
         return account;
	}


	public Account getAccountByEmail(String email) throws Exception{
		HibernateTemplate hibernateTemplate = ((HibernateCRUDTemplate)daoCRUD).getHibernateTemplate();
		List l = hibernateTemplate.find(LOAD_BY_EMAIL, email);
		if (l == null || l.isEmpty()) {
			return null;
		} else {
			return (Account) l.get(0);
		}

	}


	public Account getAccountByName(String username) throws Exception{
		HibernateTemplate hibernateTemplate = ((HibernateCRUDTemplate)daoCRUD).getHibernateTemplate();
		List l = hibernateTemplate.find(LOAD_BY_USERNAME, username);
		if (l == null || l.isEmpty()) {
			return null;
		} else {
			return(Account) l.get(0);			
		}
	}

}

⌨️ 快捷键说明

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