基于泛型的通用Dao接口:(重要是在应用hibernate或JPA时运用)
package com.qiujy.dao;
import java.io.Serializable;
import java.util.List;
/**
* 基于泛型的通用Dao接口
*/
public interface GenericDao {
void create(T entity);
void delete(T entity);
void update(T entity);
T findById(Serializable id);
List findAll();
List findList(int pageNo, int pageSize);
int getCountOfAll();
}
hibernate对此泛型Dao接口的运用:
package com.qiujy.dao.hibernate;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import org.hibernate.criterion.Projections;
import com.qiujy.common.HibernateUtil;
import com.qiujy.dao.GenericDao;
/**
* Hibernate对泛型通用Dao接口的兑现
*/
public class GenericHibernateDaoImpl implements GenericDao {
private Class clazz;
@SuppressWarnings("unchecked")
public GenericHibernateDaoImpl() {
//透过反照获取T的部类信息范例
this.clazz = (Class)((ParameterizedType)this.getClass().getGenericSuperclass())
.getActualTypeArguments()[零];
}
public void create(T entity) {
HibernateUtil.getSession().save(entity);
}
public void delete(T entity) {
HibernateUtil.getSession().delete(entity);
}
@SuppressWarnings("unchecked")
public void update(T entity) {
//HibernateUtil.getSession().saveOrUpdate(entity);
entity = (T) HibernateUtil.getSession().merge(entity);
}
@SuppressWarnings("unchecked")
public List findAll() {
return HibernateUtil.getSession().createCriteria(clazz).list();
}
@SuppressWarnings("unchecked")
public List findList(int pageNo, int pageSize) {
return HibernateUtil.getSession().createCriteria(clazz)
.setFirstResult((pageNo - 一) * pageSize)
.setMaxResults(pageSize)
.list();
}
public int getCountOfAll() {
Integer count = (Integer) HibernateUtil.getSession()
.createCriteria(clazz)
.setProjection(Projections.rowCount())
.uniqueResult();
if (null == count) {
return 零;
} else {
return count.intValue();
}
}
@SuppressWarnings("unchecked")
public T findById(Serializable id) {
return (T)HibernateUtil.getSession().load(clazz, id); //get
}
}
施用泛型Dao接口:
package com.qiujy.dao;
import java.util.List;
import com.qiujy.domain.Resource;
/**
* Resource种的Dao接口
*/
public interface ResourceDao extends GenericDao {
public List findResources(int status);
}
施用hibernate的兑现:
package com.qiujy.dao.hibernate;
import java.util.List;
import com.qiujy.common.HibernateUtil;
import com.qiujy.dao.ResourceDao;
import com.qiujy.domain.Resource;
public class ResourceDaoImpl extends GenericHibernateDaoImpl implements ResourceDao {
@SuppressWarnings("unchecked")
public List findResources(int status) {
return (List)HibernateUtil.getSession()
.createQuery("from Resource where status=:status")
.setInteger("status", status)
.list();
}
}
本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception
- 1570 - ORA-01008:不是所有的变量都赋了值
- 1571 - long型为什么不能作主键
- 1572 - 删除大量数据后出现问题
- 1573 - Oracle里日期转成字符
- 1574 - ORACLE中的begin ...end
- 1575 - System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
- 1576 - 无法定位程序输入点
- 1577 - 如何使用.net framwork的帮助
- 1578 - org.xml.sax.SAXException: Bad envelope tag: definitions
- 1579 - java.lang.NoClassDefFoundError: org kxml2 io KXmlParser
- 1580 - org.apache.commons.logging.LogConfigurationException
- 1581 - 浙江大学java视频讲座里关于异常的题目
- 1582 - error reading xml or initializing
- 1583 - java.sql.SQLException: ResultSet is closed
- 1584 - 空指针
- 1585 - error establishing socket
- 1586 - java.lang.UnsatisfiedLinkError
- 1587 - The file Default_Login.aspx has not been pre-compiled
- 1588 - and cannot be requested
- 1589 - System.Exception