SSH中继承HibernateDaoSupport 的通用Dao

原创 2011年01月07日 15:34:00

package dao.impl;

 2011-01-07
import java.sql.SQLException;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDao extends HibernateDaoSupport  {
 
 @SuppressWarnings("unchecked")//去掉黄色警告
 // 1.获取 对象
 public Object get(Class clz, java.io.Serializable id) {
  return super.getHibernateTemplate().get(clz, id);
 }

 // 2. 添加对象
 public void save(Object item) {
  super.getHibernateTemplate().save(item);
 }

 // =============3.删除,不用实例化,把主键传进来=============
 public void delete(Class clz, java.io.Serializable id) {
  super.getHibernateTemplate().delete(
    super.getHibernateTemplate().get(clz, id));
 }
 //================3.3删除 直接传进对象 ,必须先实例化=============
 public void delete(Object entity) {
  super.getHibernateTemplate().delete(entity);
 }
 // 4.修改
 public void update(Object entity) {
  super.getHibernateTemplate().update(entity);
 }

 // 5.Hql 查询 并控制分页startIndex从第一条开始,pageSize每次查询的长度

 
 public List Query(final String hql, final int startIndex,final int pageSize) {
  
  return super.getHibernateTemplate().find(hql);
  /*return super.getHibernateTemplate().executeFind(
    new HibernateCallback() {
     public Object doInHibernate(Session session)
       throws HibernateException, SQLException {
      org.hibernate.Query query = session.createQuery(hql);
      query.setFirstResult(startIndex);// 第几条 开始
      query.setMaxResults(pageSize);// 查询的条数
      return query.list();// 返回集合
     }
    });*/
 }

 // 6. 查询某个表的总条数
 public Integer getTotalCount(Object entity) {
  Session session = super.getSession();
  String hqlString = "select count(*) from " + entity;// 拼接查询
  System.out.println("查询语句:"+hqlString);
  org.hibernate.Query query = session.createQuery(hqlString);
  Long numLong=(Long) query.uniqueResult();// 返回条数
   String numString=numLong+"";
//不能一步帮Long转为整形

  session .close();
  return Integer.parseInt(numString);
  // -以为每次查询都是一个整数值,uniqueResult()获取唯一的查询结果
 }

 // 7. 根据 对象 查询 Search(PetInfo.class,new PetInfo());
 // newPetInfo()得到表的所有信息,放某个已经实例化好的 对象并保护值时就会取到的是单个对象
 public List Search(final Class clz, final Object connection,
   final int startIndex, final int pageSize) {
  return super.getHibernateTemplate().executeFind(
    new HibernateCallback() {
     public Object doInHibernate(Session session)
       throws HibernateException, SQLException {
      Criteria criteria = session.createCriteria(clz).add(
        Example.create(connection));
      criteria.setFirstResult(startIndex);// 第几条 开始
      criteria.setMaxResults(pageSize);// 查询的条数
      return criteria.list();
     }
    });
 }
 
 //8懒加载
  public void initialize(Object entity) {
    super.getHibernateTemplate().initialize(entity);
  }
  public static void main(String[] args) {
   ApplicationContext context = new FileSystemXmlApplicationContext(
   "/WebRoot/WEB-INF/applicationContext.xml");// 初始化
   BaseDao dao = (BaseDao) context.getBean("baseDao");
   List list = dao.Query("from Psxm", 0, 100);
 
 if (list != null) {
  System.out.println(list.size());
  //System.out.println(list.get(0));
 } else {
  System.out.println("空");
 }
  
 }}

如何在DAO层既使用注解又使用HibernateDaoSupport

说明: 1.在使用spring的时候,如何你用注解来实例化XxxDao,就无法继承HibernateDaoSupport.. 2.使用xml配置的话,可以通过继承HibernateDaoSuppo...
  • sinat_18882775
  • sinat_18882775
  • 2016年05月05日 05:15
  • 3461

SSH之继承HibernateDaoSupport对数据库的操作和不继承HibernateDaoSupport对数据库的操作的方法

在使用ssh来开发项目的时候,我们都希望spring来管理事务,进而管理dao层,增加开发效率,有利于快速实现功能,少出现错误。        如果需要在dao层访问数据库,可以采用在dao层的类继承...
  • u014492098
  • u014492098
  • 2014年12月23日 22:50
  • 2185

通过注解方式向Dao中注入Sessionfactory

大部分时候我们都是通过xml配置方式向DAO中注入sessionfactory来实例化bean,有时候要DAO的实例化是通过注解的方式来实现。   对dao注解的话,最大的障碍是如何同时通过注解注...
  • yang_ai
  • yang_ai
  • 2016年08月09日 10:22
  • 5318

SSH整合(其中dao用extends HibernateDaoSupport方式)总结【图解】

  • 2017年03月11日 16:47
  • 2.35MB
  • 下载

关于DAO层的sessionFactory注入和是否继承HibernateDAOSupport

这个标题被我描述的太乱太杂了,其实要讲的主要是关于怎么得到用来操作数据层所使用的hibernateTemplate(另一个种方法是通过jdbcTemplate,但推荐使用第一种)。而hibernate...
  • Yiyuan_chen
  • Yiyuan_chen
  • 2017年07月02日 11:58
  • 557

继承了HibernateDaoSupport的DAO

在继承了HibernateDaoSupport的Dao中,  this.getsession实际上是调用了父类HibernateDaoSupport中的方法获得session。使用sprin...
  • guyezi123
  • guyezi123
  • 2013年03月14日 11:46
  • 611

继承HibernateDaoSupport实现DAO(spring整合hibernate)

Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:    public final HibernateTempla...
  • mrm2830100
  • mrm2830100
  • 2014年06月06日 09:37
  • 1860

SSH的一个BaseDao继承HibernateDaoSupport(一)

自己在尝试整合SSH的时候,突然发现无法对dao的大部分功能做集成.尝试过将子类的类型在basedao的构造中传入,但是仍有部分问题不能很好的解决.mexican_jacky对我的启发很大,这种时候用...
  • sqjhwl
  • sqjhwl
  • 2013年04月27日 11:18
  • 1269

SSH中通用dao类

  • 2009年10月15日 15:12
  • 4KB
  • 下载

SSH用通用dao更新出现的问题

getSession().update()更新出现问题
  • liangzi321321
  • liangzi321321
  • 2017年03月20日 22:32
  • 284
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH中继承HibernateDaoSupport 的通用Dao
举报原因:
原因补充:

(最多只允许输入30个字)