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

📄 abstractbasedaoimpl.java

📁 提供hibernate,spring
💻 JAVA
字号:
/**
 * 
 */
package phz.util.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * @author PanHuizhi [phz50@163.com]
 * 
 */
public abstract class AbstractBaseDaoImpl<Entity> extends HibernateDaoSupport
		implements AbstractBaseDao<Entity> {

	private Class<Entity> theEntityClass = getTheEntityClass();
	private String theEntityClassName = getTheEntityClass().getName();

	protected abstract Class<Entity> getTheEntityClass();

	public void add(Entity entity) {
		this.getHibernateTemplate().save(entity);
	}

	public void delete(Entity entity) {
		this.getHibernateTemplate().delete(entity);

	}

	public void delete(List<Entity> entities) {
		this.getHibernateTemplate().deleteAll(entities);

	}

	public void update(Entity entity, String name, Object value) {
		String upperFirstLetter = name.substring(0, 1).toUpperCase();
		String methodName = "set" + upperFirstLetter + name.substring(1);
		try {
			theEntityClass.getMethod(methodName, String.class).invoke(entity,
					value);
		} catch (Exception e) {
			throw new RuntimeException(String.format(
					"could not find method: %s(%s) in [%s]", methodName,
					String.class.getName(), theEntityClass.getName()));
		}
		this.getHibernateTemplate().update(entity);
	}

	public void update(Entity entity, String[] names, Object[] values) {
		for (int i = 0; i < names.length; i++) {
			String upperFirstLetter = names[i].substring(0, 1).toUpperCase();
			String methodName = "set" + upperFirstLetter
					+ names[i].substring(1);
			try {
				theEntityClass.getMethod(methodName, String.class).invoke(
						entity, values[i]);
			} catch (Exception e) {
				throw new RuntimeException(String.format(
						"could not find method: %s(%s) in [%s]", methodName,
						String.class.getName(), theEntityClass.getName()));
			}
		}
		this.getHibernateTemplate().update(entity);
	}

	public void update(final List<Entity> entities, final String name,
			final Object value) {
		this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				for (Entity entity : entities) {
					String upperFirstLetter = name.substring(0, 1)
							.toUpperCase();
					String methodName = "set" + upperFirstLetter
							+ name.substring(1);
					try {
						theEntityClass.getMethod(methodName, String.class)
								.invoke(entity, value);
					} catch (Exception e) {
						throw new RuntimeException(String.format(
								"could not find method: %s(%s) in [%s]",
								methodName, String.class.getName(),
								theEntityClass.getName()));
					}
					session.update(entity);
				}
				return null;
			}
		});
	}

	public void update(final List<Entity> entities, final String[] names,
			final Object[] values) {
		this.getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				for (Entity entity : entities) {
					for (int i = 0; i < names.length; i++) {
						String upperFirstLetter = names[i].substring(0, 1)
								.toUpperCase();
						String methodName = "set" + upperFirstLetter
								+ names[i].substring(1);
						try {
							theEntityClass.getMethod(methodName, String.class)
									.invoke(entity, values[i]);
						} catch (Exception e) {
							throw new RuntimeException(String.format(
									"could not find method: %s(%s) in [%s]",
									methodName, String.class.getName(),
									theEntityClass.getName()));
						}
					}
					session.update(entity);
				}
				return null;
			}
		});
	}

	public Integer getCountByProperty(String name, Object value) {
		StringBuffer buf = new StringBuffer();
		buf.append("select count(*) from ").append(theEntityClassName).append(
				" entity ");
		buf.append("where entity.").append(name).append("=?");
		return ((Long) this.getHibernateTemplate().find(buf.toString(), value)
				.get(0)).intValue();
	}

	public Integer getCountByProperty(String[] names, Object[] values) {
		StringBuffer buf = new StringBuffer();
		buf.append("select count(*) from ").append(theEntityClassName).append(
				" entity ");
		if (names.length > 0) {
			buf.append("where entity.").append(names[0]).append("=?");
			for (int i = 1; i < names.length; i++) {
				buf.append(" and ");
				buf.append("entity.").append(names[i]).append("=? ");
			}
		}
		return ((Long) this.getHibernateTemplate().find(buf.toString(), values)
				.get(0)).intValue();
	}

	public Entity findById(Integer id) {
		return (Entity) this.getHibernateTemplate().get(theEntityClass, id);
	}

	public List<Entity> findByProperty(String name, Object value) {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName).append(" entity ");
		buf.append("where entity.").append(name).append("=?");
		return this.getHibernateTemplate().find(buf.toString(), value);
	}

	public List<Entity> findByProperty(final String name, final Object value,
			final Integer start, final Integer size) {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName).append(" entity ");
		buf.append("where entity.").append(name).append("=?");
		final String hql = buf.toString();
		List entites = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(hql);
						query.setParameter(0, value);
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entites;
	}

	public List<Entity> findByProperty(String[] names, Object[] values) {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName).append(" entity ");
		if (names.length > 0) {
			buf.append("where entity.").append(names[0]).append("=?");
			for (int i = 1; i < names.length; i++) {
				buf.append(" and ");
				buf.append("entity.").append(names[i]).append("=?");
			}
		}
		return this.getHibernateTemplate().find(buf.toString(), values);
	}

	public List<Entity> findByProperty(final String[] names,
			final Object[] values, final Integer start, final Integer size) {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName).append(" entity ");
		if (names.length > 0) {
			buf.append("where entity.").append(names[0]).append("=?");
			for (int i = 1; i < names.length; i++) {
				buf.append(" and ");
				buf.append("entity.").append(names[i]).append("=?");
			}
		}
		final String hql = buf.toString();
		List entities = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(hql);
						for (int i = 0; i < values.length; i++) {
							query.setParameter(i, values[i]);
						}
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entities;
	}

	public List<Entity> findAll() {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName);
		return this.getHibernateTemplate().find(buf.toString());
	}

	public List<Entity> findAll(final Integer start, final Integer size) {
		StringBuffer buf = new StringBuffer();
		buf.append("from ").append(theEntityClassName);
		final String hql = buf.toString();
		List entities = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(hql);
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entities;
	}

	public List<Entity> find(String queryString) {
		return this.getHibernateTemplate().find(queryString);
	}

	public List<Entity> find(String queryString, Object value) {
		return this.getHibernateTemplate().find(queryString, value);
	}

	public List<Entity> find(String queryString, Object[] values) {
		return this.getHibernateTemplate().find(queryString, values);
	}

	public List<Entity> find(final String queryString, final Integer start,
			final Integer size) {
		List entities = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(queryString);
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entities;
	}

	public List<Entity> find(final String queryString, final Object value,
			final Integer start, final Integer size) {
		List entities = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(queryString);
						query.setParameter(0, value);
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entities;
	}

	public List<Entity> find(final String queryString, final Object[] values,
			final Integer start, final Integer size) {
		List entities = getHibernateTemplate().executeFind(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException, SQLException {
						Query query = session.createQuery(queryString);
						for (int i = 0; i < values.length; i++) {
							query.setParameter(i, values[i]);
						}
						query.setFirstResult(start);
						query.setMaxResults(size);
						return query.list();
					}
				});
		return entities;
	}
}

⌨️ 快捷键说明

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