标题:SSH项目,有关hibernate的.本人想整理一个通用的BaseDao,高手进来指点下
只看楼主
JeffLi
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:116
注 册:2011-11-18
结帖率:0
 问题点数:0 回复次数:2 
SSH项目,有关hibernate的.本人想整理一个通用的BaseDao,高手进来指点下
BaseDao:
程序代码:
package com.jeff.dao;

public interface BaseDao<T, PK> {
    public void add(Object T);

    public Object findById(Integer PK);

    public void delete(Object T);

    public void update(Object T);
}

BaseDaoImpl
程序代码:
package com.jeff.dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.jeff.dao.BaseDao;

public class BaseDaoImpl extends HibernateDaoSupport implements BaseDao<Object, Integer> {

    public void add(Object T) {
        try {
            getHibernateTemplate().save(T);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void delete(Object T) {
        try{
            getHibernateTemplate().delete(T);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public Object findById(Integer PK) {
        Object obj = null;
        try{
            //通过ID查询怎么写
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }

    public void update(Object T) {

    }
}

最下面的那个方法.通过ID查询怎么写.
求更完善的BaseDao代码!!


搜索更多相关主题的帖子: 项目 hibernate Object update 通用 
2011-11-22 11:30
JeffLi
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:116
注 册:2011-11-18
得分:0 
回复 楼主 JeffLi
经过几天的查找。终于被我整出来了。分享下

BaseDao.java
=================================================
package com.jeff.dao;

public interface BaseDao<T, PK> {
    public void add(T entity);

    public void delete(T entity);

    public void update(T entity);

    public void deleteById(PK id);

    public T findById(PK id);

}
=================================================

BaseDaoImpl.java
=================================================

package com.jeff.dao;

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

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

public class BaseDaoImpl<T, PK extends Serializable> extends
        HibernateDaoSupport implements BaseDao<T, PK> {
    protected Class entityclass;

    public void add(final T entity) {
        //    使用这个方法的记得在applicationContext.xml中配置sessionFaction就注入到使用类中
        //    想知道原因。就看HibernateDaoSupport类中吧!
        getHibernateTemplate().save(entity);
        //    此处是一个回调方法。也可以使用。习惯使用Session来操作数据库的可以看下!
        // getHibernateTemplate().execute(new HibernateCallback() {
        // public Object doInHibernate(Session s) throws HibernateException,
        // SQLException {
        // s.save(entity);
        // return null;
        // }
        //
        // });
    }

    public void delete(T entity) {
        getHibernateTemplate().delete(entity);
    }

    public void deleteById(PK id) {
        T t = (T) getHibernateTemplate().get(this.entityclass, id);
        getHibernateTemplate().delete(t);
    }

    public T findById(PK id) {
        return (T) getHibernateTemplate().get(this.entityclass, id);
    }

    public void update(T entity) {
        getHibernateTemplate().update(entity);
    }

}
=================================================================
其它Dao类就可以这样写了
例: UserDao.java
=================================================================
package com.jeff.dao;

import java.util.List;

import com.jeff.domain.User;

public interface UserDao extends BaseDao<User, Integer> {
    public void findByUserName(String username);

    public List<User> findAllUser();
}
==================================================================
UserDaoImpl.java

==================================================================
package com.jeff.dao;

import java.util.List;

import com.jeff.domain.User;

public class UserDaoImpl extends BaseDaoImpl<User, Integer> implements UserDao {

    public List<User> findAllUser() {
        return null;
    }

    public void findByUserName(String username) {
    }

}
====================================================================

上面UserDao虽然啥也没做。也可以调用到BaseDao中实现的方法。

如果有更好的思路随时扣我。(灰常感谢)

我的企鹅:67567840
2011-12-02 17:06
JeffLi
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:116
注 册:2011-11-18
得分:0 
顶起来

我的企鹅:67567840
2011-12-12 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-355927-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.215320 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved