- Spring中常用的操作数据库的(Dao)方法
- 接口:
- public interface BaseDAO {
- void save(T instance);
- void update(T instance);
- void delete(T instance);
- T get(String id);
- List<T> findAll();
- List<T> findByExample(T instance);
- int bulkUpdate(String hql);
- int bulkUpdate(String hql, Object value);
- int bulkUpdate(String hql, Object[] value);
- List<T> find(String queryString);
- List<T> find(String queryString, Object obj);
- List<T> find(String queryString, Object[] obj);
- List<T> findByNamedParam(String queryString, String paramName, Object value);
- List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);
- List<T> findByNamedQuery(String queryName);
- List<T> findByNamedQuery(String queryName, Object value);
- List<T> findByNamedQuery(String queryName, Object[] values);
- List<T> findByProperty(String property, Object value);
- List<T> findByPagination(final T t, final int firstResult, final int maxResult);
- int countByPagination(final T t);
- }
- 实现类:
- import java.sql.*;
- import java.util.List;
- import org.hibernate.*;
- import org.hibernate.criterion.*;
- import org.springframework.orm.hibernate3.*;
- import org.springframework.orm.hibernate3.support.*;
- import com.vo.T;
- public abstract class BaseDAOImpl extends HibernateDaoSupport implements BaseDAO{
- protected abstract Class type(); //反射方法调用类
- // 保存
- public void save(T instance) {
- getHibernateTemplate().save(instance);
- }
- // 更新
- public void update(T instance) {
- getHibernateTemplate().update(instance);
- }
- // 删除
- public void delete(T instance) {
- getHibernateTemplate().delete(instance);
- }
- // 根据ID查询
- @SuppressWarnings("unchecked")
- public T get(String id) {
- return (T) getHibernateTemplate().get(type(), id);
- }
- // 查询所有
- @SuppressWarnings("unchecked")
- public List<T> findAll() {
- return getHibernateTemplate().loadAll(type());
- }
- // 根据例子查询
- @SuppressWarnings("unchecked")
- public List<T> findByExample(T instance) {
- return getHibernateTemplate().findByExample(instance);
- }
- // 根据HQL语句进行update操作等
- public int bulkUpdate(String hql) {
- return getHibernateTemplate().bulkUpdate(hql);
- }
- // 根据HQL语句进行update操作等
- public int bulkUpdate(String hql, Object value) {
- return getHibernateTemplate().bulkUpdate(hql, value);
- }
- // 根据HQL语句进行update操作等
- public int bulkUpdate(String hql, Object[] value) {
- return getHibernateTemplate().bulkUpdate(hql, value);
- }
- // 根据HQL语句进行查询
- @SuppressWarnings("unchecked")
- public List<T> find(String queryString) {
- return getHibernateTemplate().find(queryString);
- }
- // 根据HQL语句进行查询
- @SuppressWarnings("unchecked")
- public List<T> find(String queryString, Object obj) {
- return getHibernateTemplate().find(queryString, obj);
- }
- // 根据HQL语句进行查询
- @SuppressWarnings("unchecked")
- public List<T> find(String queryString, Object[] obj) {
- return getHibernateTemplate().find(queryString, obj);
- }
- /**
- * 使用命名查询进行查询
- *
- * @param queryString
- * HQL
- * @param paramName
- * 参数名
- * @param value
- * 参数值
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByNamedParam(String queryString, String paramName, Object value) {
- return this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);
- }
- /**
- * 使用命名查询进行查询 多个参数
- *
- * @param queryString
- * HQL
- * @param paramNames
- * 参数名的数组
- * @param values
- * 参数值的数组
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) {
- return this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values);
- }
- /**
- * 使用HIBERNATE映射文件中的定义的HQL语句进行查询
- *
- * @param queryName
- * 文件中定义的HQL语句的名字
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByNamedQuery(String queryName) {
- return getHibernateTemplate().findByNamedQuery(queryName);
- }
- /**
- *
- * @param queryName
- * @param value
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByNamedQuery(String queryName, Object value) {
- return getHibernateTemplate().findByNamedQuery(queryName, value);
- }
- /**
- *
- * @param queryName
- * @param values
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByNamedQuery(String queryName, Object[] values) {
- return getHibernateTemplate().findByNamedQuery(queryName, values);
- }
- /**
- * 根据属性查询
- *
- * @param property
- * @param value
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByProperty(String property, Object value) {
- return this.getHibernateTemplate().findByCriteria(
- DetachedCriteria.forClass(type()).add(Restrictions.eq(property, value)));
- }
- /**
- * 分页查询
- * 注:不能满足要求子类重写该方法
- * @param t
- * @param firstResult
- * @param maxResult
- * @return 返回分页查询的数据
- */
- @SuppressWarnings("unchecked")
- public List<T> findByPagination(final T t, final int firstResult, final int maxResult) {
- return getHibernateTemplate().executeFind(new HibernateCallback() {
- public Object doInHibernate(Session session) throws HibernateException, SQLException {
- Criteria criteria = session.createCriteria(type());
- criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE));
- criteria.setFirstResult(firstResult);
- criteria.setMaxResults(maxResult);
- return criteria.list();
- }
- });
- }
- /**
- * 分页统计查询
- *
- * @param t
- * @return 一共有多少条数据
- */
- @SuppressWarnings("unchecked")
- public int countByPagination(final T t) {
- return (Integer) getHibernateTemplate().execute(new HibernateCallback() {
- public Object doInHibernate(Session session) throws HibernateException, SQLException {
- Criteria criteria = session.createCriteria(type());
- criteria.setProjection(Projections.rowCount());
- criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE));
- return criteria.uniqueResult();
- }
- });
- }
- }
- 反射类:
- public class ClassInfoDAO{
- @SuppressWarnings("unchecked")
- protected Class type() {
- return User.class;
- }
- }
Spring中常用的操作数据库的(Dao)方法
最新推荐文章于 2024-08-08 19:26:18 发布