hibernateDao整理(未整合spring)

来源:互联网 发布:vba数据录入 编辑:程序博客网 时间:2024/06/16 19:22

项目中老是用到这些,先自己封装一个没有整合spring的


接口类


package com.liu.test.hibernate;import java.util.List;/** * 单纯hibernate查询封装 *  * @author liuzhenfeng *  */public interface HibernateDao {/** * 查询实体 *  * @param <T> * @param entityClass *            实体CLASS * @return LIST集合 */public <T> List<T> queryEntity(Class<T> entityClass);/** * and多条件查询 *  * @param <T> * @param entityClass *            实体CLASS * @param str *            条件字段 * @param obj *            条件数据 * @return LIST集合 */public <T> List<T> queryAndEntity(Class<T> entityClass, String[] str,Object[] obj);/** * in条件查询 *  * @param <T> * @param entityClass *            实体CLASS * @param str *            条件字段 * @param obj *            条件数据 * @return LIST集合 */public <T> List<T> queryInEntity(Class<T> entityClass, String str,Object[] obj);/** * 单条件查询 *  * @param <T> * @param entityClass *            实体CLASS * @param str *            查询字段 * @param obj *            字段数据 * @return LIST集合 */public <T> List<T> queryEntity(Class<T> entityClass, String str, Object obj);/** * Or条件查询 注意: 条件查询中的字段和数值要两个以上,如果为一个,请使用单条件查询 *  * @param <T> * @param entityClass *            实体CLASS * @param str *            查询字段 * @param obj *            字段数据 * @return LIST集合 */public <T> List<T> queryOrEntity(Class<T> entityClass, String[] str,Object[] obj);/** * 保存实体 *  * @param <T> * @param entityClass *            实体类,需要实例,如: Entity entity = new Entity(); saveEntity(entity); */public <T> void saveEntity(T entityClass);/** * 更新实体 *  * @param <T> * @param entityClass *            实体类,需要实例,如: Entity entity = new Entity(); *            updateEntity(entity); */public <T> void updateEntity(T entityClass);/** * 删除实体 *  * @param <T> * @param entityClass *            实体类,需要实例,如: Entity entity = new Entity(); *            deleteEntity(entity); */public <T> void deleteEntity(T entityClass);/** * 排序条件条件查询 *  * @param <T> * @param entityClass *            实体类 * @param str *            条件字段 * @param obj *            条件数据 * @param orderStr *            排序字段 * @param orderType *            排序的类型 0是降序1是升序 * @return LIST集合 */public <T> List<T> queryEntityByOrder(Class<T> entityClass, String[] str,Object[] obj, String orderStr, int orderType);/** * 分页条件查询 *  * @param <T> * @param entityClass *            实体类 * @param str *            条件字段 * @param obj *            条件字段 * @param orderStr *            排序字段 * @param orderType *            排序类型 0是降序1是升序 * @param pageStart *            开始页 * @param pageSize *            页数 * @return LIST集合 */public <T> List<T> queryEntityByPage(Class<T> entityClass, String[] str,Object[] obj, String orderStr, int orderType, int pageStart,int pageSize);/** * 更新或保存,主要解决有些类不能保存的问题,如果主键冲突,即更新 *  * @param <T> * @param entityClass *            实体类 */public <T> void saveOrUpdateEntity(Class<T> entityClass);}


实现


package com.liu.test.hibernate;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Order;import org.hibernate.criterion.Restrictions;import com.liu.test.bean.User;import com.liu.test.util.HibernateUtil;/** *  * @author liuzhenfeng *  */public class HibernateDaoImpl implements HibernateDao {public static int HIBERNATE_DESC = 0;public static int HIBERNATE_ASC = 1;@SuppressWarnings("unchecked")public <T> List<T> queryEntity(Class<T> entityClass) {Session session = HibernateUtil.currentSession();List<T> list = DetachedCriteria.forClass(entityClass).getExecutableCriteria(session).list();HibernateUtil.closeSession();return list;}@SuppressWarnings("unchecked")public <T> List<T> queryAndEntity(Class<T> entityClass, String[] str,Object[] obj) {Session session = HibernateUtil.currentSession();DetachedCriteria dc = DetachedCriteria.forClass(entityClass);for (int i = 0; i < str.length; i++) {dc.add(Restrictions.eq(str[i], obj[i]));}List<T> list = dc.getExecutableCriteria(session).list();HibernateUtil.closeSession();return list;}@SuppressWarnings("unchecked")public <T> List<T> queryInEntity(Class<T> entityClass, String str,Object[] obj) {Session session = HibernateUtil.currentSession();List<T> list = DetachedCriteria.forClass(entityClass).add(Restrictions.in(str, obj)).getExecutableCriteria(session).list();HibernateUtil.closeSession();return list;}@SuppressWarnings("unchecked")public <T> List<T> queryEntity(Class<T> entityClass, String str, Object obj) {Session session = HibernateUtil.currentSession();List<T> list = DetachedCriteria.forClass(User.class).add(Restrictions.eq(str, obj)).getExecutableCriteria(session).list();HibernateUtil.closeSession();return list;}@SuppressWarnings("unchecked")public <T> List<T> queryOrEntity(Class<T> entityClass, String[] str,Object[] obj) {Session session = HibernateUtil.currentSession();int count = str.length % 2;DetachedCriteria dc = DetachedCriteria.forClass(User.class);if (0 == count) {for (int i = 0; i < str.length / 2; i = i + 2) {dc.add(Restrictions.or(Restrictions.eq(str[i], obj[i]),Restrictions.eq(str[i + 1], obj[i + 1])));}} else if (1 == count) {for (int i = 0; i < (str.length - 3) / 2; i = i + 2) {dc.add(Restrictions.or(Restrictions.eq(str[i], obj[i]),Restrictions.eq(str[i + 1], obj[i + 1])));}dc.add(Restrictions.or(Restrictions.eq(str[str.length - 1],obj[str.length - 1]), Restrictions.or(Restrictions.eq(str[str.length - 2], obj[str.length - 2]), Restrictions.eq(str[str.length - 3], obj[str.length - 3]))));}List<T> list = dc.getExecutableCriteria(session).list();return list;}public <T> void saveEntity(T entityClass) {Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();session.save(entityClass);tx.commit();HibernateUtil.closeSession();}public <T> void updateEntity(T entityClass) {Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();session.update(entityClass);tx.commit();HibernateUtil.closeSession();}public <T> void deleteEntity(T entityClass) {Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();session.delete(entityClass);tx.commit();HibernateUtil.closeSession();}@SuppressWarnings("unchecked")public <T> List<T> queryEntityByOrder(Class<T> entityClass, String[] str,Object[] obj, String orderStr, int orderType) {Session session = HibernateUtil.currentSession();DetachedCriteria dc = DetachedCriteria.forClass(entityClass);for (int i = 0; i < str.length; i++) {dc.add(Restrictions.eq(str[i], obj[i]));}if (orderType == HIBERNATE_DESC) {dc.addOrder(Order.desc(orderStr));} else if (orderType == HIBERNATE_ASC) {dc.addOrder(Order.asc(orderStr));}List<T> list = dc.getExecutableCriteria(session).list();HibernateUtil.closeSession();return list;}@SuppressWarnings("unchecked")public <T> List<T> queryEntityByPage(Class<T> entityClass, String[] str,Object[] obj, String orderStr, int orderType, int pageStart,int pageSize) {Session session = HibernateUtil.currentSession();DetachedCriteria dc = DetachedCriteria.forClass(entityClass);for (int i = 0; i < str.length; i++) {dc.add(Restrictions.eq(str[i], obj[i]));}if (orderType == HIBERNATE_ASC) {dc.addOrder(Order.asc(orderStr));} else if (orderType == HIBERNATE_DESC) {dc.addOrder(Order.desc(orderStr));}Criteria executableCriteria = dc.getExecutableCriteria(session);if (pageStart >= 0) {executableCriteria.setFirstResult(pageStart);}if (pageSize > 0) {executableCriteria.setMaxResults(pageSize);}List<T> list = executableCriteria.list();return list;}public <T> void saveOrUpdateEntity(Class<T> entityClass) {Session session = HibernateUtil.currentSession();Transaction tx = session.beginTransaction();session.saveOrUpdate(entityClass);tx.commit();HibernateUtil.closeSession();}}



原创粉丝点击