MaTouChuanZhi/src/com/allde/framework/dao/impl/AbstractDAOHibernateImpl.java

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.allde.framework.dao.impl;

import java.io.Serializable;
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;

import com.allde.framework.dao.dao.DAO;
import com.allde.framework.model.Model;
import com.allde.framework.util.PagerModel;

/**
 * 构造方法的参数必须传 两个抽象方法必须覆盖,注意他们两个的命名是有联系的 如果想外键式的真实值/表现值转换,需要覆盖4个方法(不是抽象的)
 * 
 * @author Administrator
 * 
 * @param <M>
 * @param <QM>
 */
public abstract class AbstractDAOHibernateImpl<M extends Model, QM extends M>
		extends HibernateDaoSupport implements DAO<M, QM> {

	protected final Class<M> clazz;
	private final String modelName;

	protected AbstractDAOHibernateImpl(Class<M> clazz) {
		this.clazz = clazz;
		this.modelName = clazz.getSimpleName();
	}

	public final Serializable create(M model) {
		return this.getHibernateTemplate().save(model);
	};

	public final boolean delete(int id) {
		@SuppressWarnings("unchecked")
		M model = (M) this.getHibernateTemplate().load(clazz, id);
		this.getHibernateTemplate().delete(model);
		return true;
	}

	public final boolean update(M model) {
		this.getHibernateTemplate().update(model);
		return true;
	}

	public final M getSingle(int id) {
		final String hql = this.generateHQLSelect() + " From " + this.modelName
				+ " o " + this.generateHQLFrom() + " Where 1=1 "
				+ this.generateHQLJoinCondition()
				+ "and o.id=:id order by o.id";
		Query query = this.getSession().createQuery(hql);
		query.setInteger("id", id);
		List<M> list = this.prepareResult(query.list());
		if (list == null || list.size() == 0) {
后面还有 118 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。