我是靠谱客的博主 现实河马,最近开发中收集的这篇文章主要介绍Hibernate通用的曾删改查代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package com.fjk.commonbasedao;

import java.util.List;
import java.util.Map;

import com.fjk.util.QueryCriteria;

/**
 * 通用操作接口
 * 
 * @author
 * 
 */
public interface CommonDao {
	/**
	 * 保存对象
	 * 
	 * @param
	 * @return
	 */
	public <T> Integer save(T entity);

	/**
	 * 删除对象
	 * 
	 * @param
	 * @return
	 */
	public <T> Integer delete(T entity);

	/**
	 * 更新对象
	 * 
	 * @param
	 * @return
	 */
	public <T> Integer update(T entity);

	/**
	 * 保存、更新对象
	 * 
	 * @param
	 * @return
	 */
	public <T> Integer saveOrUpdate(T entity);

	/**
	 * 通过id来查找某一个对像
	 * 
	 * @param
	 * @param
	 * @return
	 */
	public <T> T findById(Class<T> entityClass, String id);

	

	/**
	 * 通过HQL语句或者实体类类名查找某类对象
	 * 
	 * @param
	 * @param
	 * @return
	 */
	public <T> List<T> findByHql(Class<T> entityClass, String HQL);

	/**
	 * 多条件查询 目前仅限于单表条件查询
	 * 
	 * @param
	 * @return
	 * entity封装了查询条件
	 */
	public <T> List<T> findByObj(T entity);
	/**
	 * 返回单个Object
	 * @param CriteriaOne
	 * @param CriteriaTow
	 * @return
	 */
	public Object findOneObject(Map<String,Object>parameter ,String HQL);
	/**
	 * 查询数据返回一个集合
	 * @param CriteriaOne
	 * @param CriteriaTow
	 * @return
	 */
	public <T> List<T> findMany(Map<String,Object>parameter,String HQL);
	/**
	 * 返回Integer
	 * @param CriteriaOne
	 * @param CriteriaTow
	 * @return
	 */
	public Integer findManyInteger(Map<String,Object>parameter,String HQL);
	
	/**
	 * 通过QueryCriteria封装的查询条件查询的
	 * @param criteria
	 * @return List<T>
	 */
	public <T> List<T> findManyByQueryCriteria(Map<String,Object>parameter,String HQL);
}

实现类

package com.fjk.commonbasedaoimpl;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Component;

import com.fjk.commonbasedao.CommonDao;
import com.fjk.util.QueryCriteria;

/**
 * 通用操作实现类
 * 
 * @author
 * 
 */
@Component("commoDao")
public class CommonDaoImpl implements CommonDao {

	@Resource(name = "sessionFactory")
	private SessionFactory getMySessionFactory;

	private Session getSession() {
		return getMySessionFactory.openSession();
	}

	/**
	 * 添加
	 */
	public <T> Integer save(T entity) {
		try {
			this.getSession().save(entity);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * 删除
	 */
	public <T> Integer delete(T entity) {
		try {
			this.getSession().delete(entity);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * 更新
	 */
	public <T> Integer update(T entity) {
		try {
			this.getSession().update(entity);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * 保存或者更新
	 */
	public <T> Integer saveOrUpdate(T entity) {
		try {
			this.getSession().saveOrUpdate(entity);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return -1;
		}
	}

	/**
	 * 根据Id查询某个对象
	 */
	@SuppressWarnings("unchecked")
	public <T> T findById(Class<T> entityClass, String id) {
		try {
			return (T) this.getSession().get(entityClass, id);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 根据Bean的全类名查询数据或者HQL语句查询数据据
	 */
	@SuppressWarnings("unchecked")
	public <T> List<T> findByHql(Class<T> entityClass, String hql) {
		try {
			if (hql == null || hql.equals("")) {
				return (List<T>) this.getSession()
						.createQuery("from " + entityClass.getName()).list();
			}
			return (List<T>) this.getSession().createQuery(hql).list();
		} catch (DataAccessException e) {
			e.printStackTrace();
			return null;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 根据根据条件查询数据
	 */
	@SuppressWarnings("unchecked")
	public <T> List<T> findByObj(T entity) {
		// 保存查询条件中的属性名称
		List<Object> fieldName = new ArrayList<Object>();
		// 保存查询添加中的属性对应值
		List<Object> fieldValue = new ArrayList<Object>();
		try {
			Class clazz = entity.getClass(); // 获得对应Class对象
			Field[] fields = entity.getClass().getDeclaredFields();// 获得对应Class所声明的所有字段

			// 遍历所有字段属性
			for (Field field : fields) {
				// 获得对应get方法
				Method getMethod = null;
				try {
					// 获取不到对应get方法则跳到下个属性
					getMethod = new PropertyDescriptor(field.getName(), clazz)
							.getReadMethod();
				} catch (IntrospectionException e) {
					e.getMessage();
					continue;
				}
				Object val = getMethod.invoke(entity, null);
				if (val != null) {
					fieldName.add(field.getName());
					fieldValue.add(val);
				}
			}
			// 根据获取到的查询条件拼接查询语句
			StringBuffer hql = new StringBuffer();
			hql.append("from ").append(clazz.getName()).append(" a where 1=1 ");
			for (int i = 0; i < fieldName.size(); i++) {
				String name = fieldName.get(i).toString();
				String val = fieldValue.get(i).toString();
				hql.append(" and a.").append(name).append("=")
						.append("'" + val + "'");
				System.out.println(name + "t" + val);
			}
			System.out.println(hql);
			return this.getSession().createQuery(hql.toString()).list();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}

	}
/**
 * 返回单个查询结果对象
 */
	@Override
	public Object findOneObject(Map<String, Object> parameter, String HQL) {
		Query query=this.getSession().createQuery(HQL);
		 String[] pamarsName = query.getNamedParameters();
		for (int i = 0; i < pamarsName.length; i++) {
			query.setParameter(pamarsName[i], parameter.get(pamarsName[i]));
		}
		return query.uniqueResult();
	}
	/**
	 * 返回多个查询结果对象
	 */

	@SuppressWarnings("unchecked")
	@Override
	public <T> List<T> findMany(Map<String, Object> parameter, String HQL) {
		Query query=this.getSession().createQuery(HQL);
		 String[] pamarsName = query.getNamedParameters();//获取参数列表
		 
		for (int i = 0; i < pamarsName.length; i++) {
			query.setParameter(pamarsName[i], parameter.get(pamarsName[i]));
		}
		return query.list();
	}

	@Override
	public Integer findManyInteger(Map<String, Object> parameter, String HQL) {
		// TODO Auto-generated method stub
		return null;
	}
/**
 * 多条件查询
 */
	@Override
	public <T> List<T> findManyByQueryCriteria(Map<String, Object> parameter,String HQL) {
		// TODO Auto-generated method stub
		return null;
	}
}

Hibernate通用的增删改查代码


最后

以上就是现实河马为你收集整理的Hibernate通用的曾删改查代码的全部内容,希望文章能够帮你解决Hibernate通用的曾删改查代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部