`

BaseDao 的封装.

阅读更多
package com.bjdream.common;

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

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

public class BaseDao extends HibernateDaoSupport implements IBaseDao {
	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#add(java.lang.Object)
	 */
	public void add(Object obj) {
		getHibernateTemplate().save(obj);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#update(java.lang.Object)
	 */
	public void update(Object obj) {
		getHibernateTemplate().update(obj);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#del(java.lang.Object)
	 */
	public void del(Object obj) {
		getHibernateTemplate().delete(obj);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#findAll(java.lang.Class)
	 */
	public List findAll(Class c) {
		return getHibernateTemplate().loadAll(c);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#findById(java.lang.Class, java.io.Serializable)
	 */
	public Object findById(Class c, Serializable id) {
		return getHibernateTemplate().get(c, id);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#loadById(java.lang.Class, java.io.Serializable)
	 */
	public Object loadById(Class c, Serializable id) {
		return getHibernateTemplate().load(c, id);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#delById(java.lang.Class, java.io.Serializable)
	 */
	public void delById(Class c, Serializable id) {
		del(findById(c, id));
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#bulkUpdateOrDel(java.lang.String, java.lang.Object)
	 */
	public void bulkUpdateOrDel(String hql, Object... obj) {
		getHibernateTemplate().bulkUpdate(hql, obj);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#queryPage(java.lang.String, java.lang.Integer, java.lang.Integer, java.lang.Object)
	 */
	public List queryPage(final String hql, final Integer page,
			final Integer size, final Object... obj) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {

		   
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if (obj != null) {
					for (int i = 0; i < obj.length; i++) {
						query.setParameter(i, obj[i]);
					}
				}
				if (page != null && size != null) {
					query.setFirstResult((page - 1) * size).setMaxResults(size);
				}
				return query.list();
			}
		});
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#findByHql(java.lang.String, java.lang.Object)
	 */
	public List findByHql(String hql, Object... obj) {
		return getHibernateTemplate().find(hql, obj);
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#findBySql(java.lang.String, java.lang.Object)
	 */
	public List findBySql(final String sql, final Object... obj) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {

			@Override
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				SQLQuery squery = session.createSQLQuery(sql);
				if (obj != null) {
					for (int i = 0; i < obj.length; i++) {
						squery.setParameter(i, obj);
					}
				}
				return squery.list();
			}
		});
	}

	/* (non-Javadoc)
	 * @see com.bjdream.common.IBaseDao#findMaxMin(java.lang.String, java.lang.Object)
	 */
	public Object findMaxMin(final String hql,final Object... obj) {
		return getHibernateTemplate().execute(new HibernateCallback() {

			@Override
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if(obj!=null){
					for (int i = 0; i < obj.length; i++) {
						query.setParameter(i, obj[i]);
					}
				}
				return query.uniqueResult();				
			}
		});
	}
}

 

分享到:
评论

相关推荐

    BaseDAO.js

    在JavaScript开发中,数据库访问对象(DAO,Database Access Object)是一种常见的设计模式,用于封装对数据库的操作,从而实现业务逻辑与数据存储的解耦。BaseDAO.js是这样一个基础框架,它为开发者提供了一个便捷...

    精简封装Basedao.pdf

    总之,`BaseDao`接口及其实现是Java中数据访问层设计的一个常见模式,用于封装数据库操作,提供通用的方法供业务逻辑调用。这样的设计有助于减少代码重复,提高代码质量,同时也便于更换不同的数据库引擎。

    BaseDao.java,DaoUtil.java

    通过继承或实现`BaseDao`,其他具体的DAO类可以复用这些通用方法,减少代码重复,并保持良好的封装和单一职责原则。 例如,`BaseDao`可能包含以下方法: ```java public interface BaseDao&lt;T&gt; { void insert(T ...

    baseDao封装基本的增删查改方法

    使用baseDao封装基本的增删改查的方法,包括分页查询等功能

    spring4+hibernate4 封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8

    3. **BaseDao封装**:BaseDao是一般用于数据访问层的基类,它包含了通用的CRUD操作。在这个项目中,BaseDao可能已经定义了如`save()`, `update()`, `delete()`, `findById()`, `findAll()`等方法,以供其他特定的DAO...

    BaseDao.java

    使代码简洁而且重用性大我们必须写一个工具类来封装这些属性,但是这样还有一个缺点就是下一次你开发项目又要重新写,因此我们需要将我们的工具类进行封装每次要使用就直接导入即可,这样就十分的方便,也方便维护

    [详细完整版]数据库封装.docx

    文档中提到了`BaseDao`类,尽管没有给出具体实现,但通常在DAO(Data Access Object)设计模式中,此类会包含更具体的数据库操作,比如查询方法,以及对ResultSet的处理,进一步抽象出对数据库的读写操作,将数据库...

    basedao_basedao数据库_

    BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式可以提高代码复用性,降低业务逻辑与数据访问层的耦合度。 首先,我们来...

    图书管理系统增删查改jspservlet基础项目BaseDao.docx

    2. **BaseDao类**: 这是一个抽象出的基类,封装了数据库操作的通用逻辑,包括连接获取、SQL语句执行以及结果集处理等,目的是提高代码的复用性和可维护性。 3. **Connection对象**: JDBC的核心接口,代表与数据库的...

    BaseDao的封装

    在IT行业中,数据库操作是应用程序的核心部分,而`BaseDao`的封装则是一种常见的设计模式,用于简化数据库访问层(DAO)的实现。这个模式的主要目的是提高代码的可复用性和可维护性,减少重复的SQL操作代码。下面...

    基于SpringJDBC的BaseDAO

    - 查询结果被封装成Map列表返回。 2. **查询所有记录(queryAll)** - **方法定义**:`public List, Object&gt;&gt; queryAll(String tableName, String keyName)` - **作用**:查询表中的所有记录,并按照指定字段...

    Mybatis通用DAO设计封装(mybatis)

    Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...

    dbutils封装ORM 实现BaseDAO

    `BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...

    基于JDBC封装的BaseDao(实例代码)

    本篇文章将介绍一个基于JDBC封装的`BaseDao`实例,该实例提供了一个通用的DAO(Data Access Object)模板,可以应用于多种实体类的操作。 首先,`BaseDao`泛型类被定义为`&lt;T&gt;`,表示它可以处理任何类型的对象。类中...

    基于注解反射封装的BaseDao(支持一对多查询)

    本篇将深入探讨如何利用注解和反射机制来封装一个支持一对多查询的 `BaseDao`。 首先,我们需要了解注解(Annotation)。注解是Java提供的一种元数据,它为编译器和工具提供了信息,可以用于代码验证、代码生成、...

    Spring声明式事务及BaseDao完整版

    1. **DAO(Data Access Object)**:DAO模式是数据库访问层的通用设计,用于封装对数据库的操作,使业务逻辑与数据访问逻辑分离。 2. **BaseDao的作用**:BaseDao通常包含一些通用的数据库操作,如增删查改的基本...

    基于hibernate封装的BaseDao

    基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872

    基于JDBC封装的BaseDao(实例代码).rar_java编程

    "基于JDBC封装的BaseDao实例"是一个常见的设计模式,用于简化数据库操作,提高代码复用性,降低耦合度。BaseDao通常作为基类,提供通用的数据库操作方法,比如增删查改(CRUD)等。 首先,我们需要了解JDBC的基本...

Global site tag (gtag.js) - Google Analytics