、引用茶叶写的一个baseDAO
package com.juno.dao.service;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;
/**
* 所有Dao类的父类
*
* @author macrotea 2011-2-31
* @param <T>
*/
@Component("baseDao")
public class BaseDao<T, ID> extends HibernateDaoSupport {
private static final Logger logger = LoggerFactory.getLogger(BaseDao.class);
/**
* 设置Dao将操作的实体
*/
private Class<T> entityClazz;
public Class<T> getEntityClazz() {
return entityClazz;
}
public void setEntityClazz(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
public BaseDao() {
super();
}
public BaseDao(Class<T> entityClazz) {
this.entityClazz = entityClazz;
}
/**
* 设置hibernateTemplate所需的SessionFactory
*/
@Resource
public void setLocalSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
/**
* 获得所有实体记录
*/
@SuppressWarnings("unchecked")
public List<T> findAll() throws Exception {
return getHibernateTemplate().find("FROM " + entityClazz.getSimpleName());
}
/**
* 保存一个实体
*/
@SuppressWarnings("unchecked")
public ID save(T obj) throws Exception {
return (ID) getHibernateTemplate().save(obj);
}
/**
* 保存/更新一个实体
*/
public void saveOrUpdate(T obj) throws Exception {
getHibernateTemplate().saveOrUpdate(obj);
}
/**
* 根据id获得一个实体
*/
@SuppressWarnings("unchecked")
public T findById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().get(entityClazz, id);
if (retVal == null) {
logger.debug("get:该ID:" + id + " 的实体不存在!");
}
return retVal;
}
/**
* 根据id加载一个实体
*/
@SuppressWarnings("unchecked")
public T loadById(int id) throws Exception {
T retVal = (T) getHibernateTemplate().load(entityClazz, id);
return retVal;
}
/**
* 根据id删除一个实体
*/
public void deleteById(int id) throws Exception {
T entity = loadById(id);
if (entity == null) {
String msg = "delete:该ID:" + id + " 的实体不存在!";
throw new Exception(msg);
}
getHibernateTemplate().delete(entity);
}
/**
* 获得所有实体记录总数
*/
@SuppressWarnings("unchecked")
public Long countAll() throws Exception {
List retVal = getHibernateTemplate().find("SELECT count(*) FROM " + entityClazz.getSimpleName());
return (Long) retVal.get(0);
}
/**
* 根据属性和属性值查找
*/
@SuppressWarnings("unchecked")
public List findByProperty(String propertyName, Object value) throws Exception {
System.out.println("findByProperty value:" + value);
List retVal = getHibernateTemplate().find("from " + entityClazz.getSimpleName() + " as model where model." + propertyName + "= ?", value);
return retVal;
}
/**
* 根据多个id查找
*/
public List<T> findByIdArray(Integer[] idArray) throws Exception {
List<T> retVal = new ArrayList<T>();
T model = null;
for (int i = 0; i < idArray.length; i++) {
model = findById(idArray[i]);
retVal.add(model);
}
return retVal;
}
}
然后自己写一个dao类来继承basedao
package com.juno.dao.service.impl;
import org.springframework.stereotype.Component;
import com.juno.bean.Hello;
import com.juno.dao.service.BaseDao;
import com.juno.dao.service.HelloDAO;
/**
* @author Juno
*
*/
@Component("helloDao")
public class HelloDAOImpl extends BaseDao<Hello, Integer> implements HelloDAO {
// property constants
public static final String USERNAME = "username";
public static final String AGE = "age";
/*
* 如下方式调用父类方法:super.XXX()
*/
public HelloDAOImpl() {
super(Hello.class);
}
@Override
public void update(Hello Hello) throws Exception {
}
}
这时候、一定要记住加上
public HelloDAOImpl() {
super(Hello.class);
}
这个构造方法!要不无效!
分享到:
相关推荐
手动实现BaseDao 自动写数据库操作
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
hibernate的BaseDAO源代码
java泛型BaseDao与BaseService
基于hibernate的baseDao,注释很详细,方便实用
这个是一个公共的basedao类。需要使用的话直接复制。内容看看就明白了
ssh+baseDao实现分页,分享给新人
基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872
BaseDao代码通用Dao
mybatis basedao 是一款封装了基本增删改查的 简化开发操作
java中Dao层中的BaseDao,适用于C#连接数据库
这个一个Java的BaseDAO和分页处理的ppt,很好哦,没事可以看一下
BaseDao标准模板
java最常用的BaseDao和BaseDaoImpl
尊重原创——SpringBoot_BaseDao.zip,内部含有反射,获取泛型类类型,如何使用等,自己下载查看
Spring声明式事务及BaseDao完整版
java基本BaseDao写法,有注释,可方便初学者的使用,直接调用里面方法来执行。
hibernate中使用到的BASEDAO类,有所有方法的详细说明以及代码参考,欢迎下载