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

📄 genericserviceimpl.java

📁 SSHMail Ajax方式提交,自动抓取页面内容,统计关键字个数.
💻 JAVA
字号:
/**
 * 顶层父类
 */
package com.leo.service.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;

import com.leo.service.IGenericService;
import com.leo.util.PageInfo;

/**
 * @author superleo
 * 
 */
public class GenericServiceImpl<T, PK extends Serializable> implements
		IGenericService<T, PK> {

	private Class<T> type;

	private HibernateTemplate hibernateTemplate;

	public GenericServiceImpl(Class<T> type) {
		this.type = type;
	}

	@Transactional
	public void delete(T t) {
		hibernateTemplate.delete(t);
	}

	public T load(PK id) {
		return (T) hibernateTemplate.get(type, id);
	}

	@Transactional
	public PK store(T t) {
		return (PK) hibernateTemplate.save(t);
	}

	@Transactional
	public void update(T t) {
		hibernateTemplate.update(t);
	}

	@SuppressWarnings("unchecked")
	public T findByNameExact(String name) {
		List<T> list = this.getHibernateTemplate().find(
				"from " + type.getName() + " e where e.name = ? ", name);
		return list != null && list.size() == 1 ? list.get(0) : null;
	}

	public List<T> findByName(String name, PageInfo pageInfo) throws Exception {
		String hql = "from " + type.getName() + " e where e.name like '%"
				+ name + "%' ";
		return this.findByAll(hql, pageInfo);
	}

	public List<T> findByAll() throws Exception {
		String hql = "from " + type.getName() + " e";
		System.out.println(hql);
		return this.getHibernateTemplate().find(hql);
	}

	public List<T> findByAll(final String hql, PageInfo pageInfo)
			throws Exception {

		List<T> pagelist = null;
		Session session = this.getHibernateTemplate().getSessionFactory()
				.openSession();

		pageInfo.setRecordCount(this.getTotalCount(session, hql));
		Query query = session.createQuery(hql);
		int start = (pageInfo.getPage() - 1) * pageInfo.getPageSize();
		int rowNum = pageInfo.getPageSize();
		query.setFirstResult(start);
		query.setMaxResults(rowNum);
		pagelist = query.list();

		return pagelist;

	}

	public List<T> deleteByAll(final String hql) throws Exception {

		List<T> pagelist = null;
		Session session = this.getHibernateTemplate().getSessionFactory()
				.openSession();

		Query query = session.createQuery(hql);
		query.executeUpdate();

		return pagelist;

	}

	// 取得总数
	public int getTotalCount(Session session, String hql) throws Exception {
		Integer amount = new Integer(0);
		int sql_from = hql.indexOf("from");
		int sql_orderby = hql.indexOf("order by");// 为了改进
		String countStr = "";

		if (sql_orderby > 0) {
			countStr = "select count(*) "
					+ hql.substring(sql_from, sql_orderby);
		} else
			countStr = "select count(*) " + hql.substring(sql_from);

		Query query = session.createQuery(countStr);
		if (!query.list().isEmpty()) {
			amount = new Integer(query.list().get(0).toString());
		} else
			return 0;
		return amount.intValue();
	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

}

⌨️ 快捷键说明

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