• SSH 项目中 用Hibernate底层 简单的封装DAO层


    废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用.

    首先:必须要继承的

    public class CommonDao extends HibernateDaoSupport

    紧接着是要注入必须的数据源:

     @Resource
        private SessionFactory sessionFactory;
    
        @PostConstruct
        public void initSessionFactory() {
            super.setSessionFactory(sessionFactory);
        }

    好了,下面就全是简单的方法封装了:

     /**
         * 
         * 功能描述: 获取多个结果
         * 
         * @param hql
         * @return
         */
        public List getManyObjects(String hql) {
            return getHibernateTemplate().find(hql);
        }
       /**
         * 
         * 功能描述: 预编译,带参数,得到多条记录
         * 
         * @param hql
         * @param args
         * @return
         */
        public List getManyObjects(String hql, Object[] args) {
            return getHibernateTemplate().find(hql, args);
        }
      /**
         * 
         * 功能描述: 预编译,带参数,得到一条记录
         * 
         * @param hql
         * @param args
         * @return
         */
        public Object getOneObject(String hql, Object[] args) {
            List list = getHibernateTemplate().find(hql, args);
            if (list == null || list.size() == 0) {
                return null;
            } else {
                return list.get(0);
            }
        }
     /**
         * 
         * 功能描述: 保存一条记录
         * 
         * @param obj
         * @return
         */
        public Object save(Object obj) {
            return getHibernateTemplate().save(obj);
        }
     /**
         * 
         * 功能描述: 保存多条记录
         * 
         * @param objs
         * @return
         */
        public List saveAll(List objs) {
            if (objs == null || objs.size() == 0) {
                return null;
            }
            List list = new ArrayList();
            for (Object ob : objs) {
                list.add(save(ob));
            }
            return list;
        }
     /**
         * 
         * 功能描述: 更新一条实体
         * 
         * @param obj
         * @return
         */
        public void update(Object obj) {
            getHibernateTemplate().update(obj);
        }
      /**
         * 
         * 功能描述: 更新/保存一条实体
         * 
         * @param obj
         * @return
         */
        public void merge(Object obj) {
            getHibernateTemplate().merge(obj);
        }
     /**
         * 
         * 功能描述: 更新/保存一条实体
         * 
         * @param obj
         * @return
         */
        public void saveOrUpdate(Object obj) {
            getHibernateTemplate().saveOrUpdate(obj);
        }
     /**
         * 
         * 功能描述: 删除实体
         * 
         * @param obj
         */
        public void delete(Object obj) {
            getHibernateTemplate().delete(obj);
        }
    /**
         * 
         * 功能描述:保存集合对象
         * 
         * @param list
         */
        public void saveManyObjects(List list) {
            if (list == null || list.size() == 0) {
                return;
            }
            for (int i = 0; i < list.size(); i++) {
                getHibernateTemplate().save(list.get(i));
            }
        }
     /**
         * 功能描述: 执行HQL
         * 
         * @param hql
         * @return
         */
        public int bulkUpdate(String hql) {
            return getHibernateTemplate().bulkUpdate(hql);
        }
     /**
         * 
         * 功能描述: 执行HQL,带参数
         * 
         * @param hql
         * @param params
         * @return
         */
        public int bulkUpdate(String hql, final Object[] params) {
            return getHibernateTemplate().bulkUpdate(hql, params);
        }
     /**
         * 
         * 功能描述: 执行原生增删改SQL
         * 
         * @param sql
         */
        public void executeNativeSqlUpdate(final String sql) {
            this.getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws SQLException {
                    session.createSQLQuery(sql).executeUpdate();
                    return null;
                }
            });
        }
     /**
         * 
         * 功能描述: 执行原生增删改SQL 带参数
         * 
         * @param sql
         * @param params
         */
        public void executeNativeSqlUpdate(final String sql, final Object[] params) {
            this.getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws SQLException {
                    Query query = session.createSQLQuery(sql);
                    if (params != null && params.length > 0) {
                        for (int i = 0; i < params.length; i++) {
                            query.setParameter(i, params[i]);
                        }
                    }
                    query.executeUpdate();
                    return null;
                }
            });
        }
     /**
         * 
         * 功能描述: 执行原生查询SQL,带参数
         * 
         * @param sql
         * @return
         */
        public List executeNativeSqlQuery(final String sql, final Object[] params) {
            List list = (List) this.getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws SQLException {
                    Query query = session.createSQLQuery(sql);
                    if (params != null && params.length > 0) {
                        for (int i = 0; i < params.length; i++) {
                            query.setParameter(i, params[i]);
                        }
                    }
                    return query.list();
                }
            });
            return list;
        }
     /**
         * 
         * 功能描述: 分页查询
         * 
         * @param sql
         * @param firstRow
         * @param maxRow
         * @return
         */
        public List findByPage(final String sql, final int firstRow, final int maxRow) {
            return getHibernateTemplate().executeFind(new HibernateCallback() {
    
                public Object doInHibernate(Session session) throws SQLException {
                    Query q = session.createQuery(sql);
                    q.setFirstResult(firstRow);
                    q.setMaxResults(maxRow);
                    return q.list();
                }
    
            });
        }
      /**
         * 
         * 功能描述: 获取总页数
         * 
         * @param sql
         * @return
         */
        public int findTotal(final String sql) {
            Long total = (Long) getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws SQLException {
                    String countHQL = "select count(1) " + sql;
                    Query q = session.createQuery(countHQL);
                    Long total = (Long) q.uniqueResult();
                    return total;
                }
    
            });
            if (total != null) {
                return total.intValue();
            } else {
                return 0;
            }
        }
     /**
         * 根据指定的原生SQL和参数 查询 返回对应的java实体
         * @param sql 原生SQL查询语句
         * @param params SQL参数数组
         * @param clazz 实体类
         * @return List
         */
        public List executeNativeSqlQueryForClass(final String sql, final Object[] params, final Class clazz) {
            List list = (List) this.getHibernateTemplate().execute(new HibernateCallback() {
                public Object doInHibernate(Session session) throws HibernateException, SQLException {
                    Query query = session.createSQLQuery(sql).addEntity(clazz);
                    if (params != null && params.length > 0) {
                        for (int i = 0; i < params.length; i++) {
                            query.setParameter(i, params[i]);
                        }
                    }
                    return query.list();
                }
            });
            return list;
        }
     /**
         * 
         * 功能描述:执行原生sql 查询 返回List<map>的 结构
         * 
         * @param sql
         * @return
         */
        public List findMapBySql(final String sql) {
            return getHibernateTemplate().executeFind(new HibernateCallback() {
    
                public Object doInHibernate(Session session) throws SQLException {
                    SQLQuery query = session.createSQLQuery(sql);
                    query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);
                    return query.list();
                }
    
            });
        }

    以上就是一些基本的封装方法,可以非常方便的供项目中使用.

  • 相关阅读:
    HDOJ 2955
    SG函数
    关于背包问题的二进制优化
    一个还算能用的调试代码
    ural 1568 Train Car Sorting 题解
    【虚拟机】:"该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。"
    解决Zookeeper报错:conf is not executed because it is not in the whitelist的解决办法
    Kali Linux更新和配置
    Docker拉取镜像时错误解决办法
    运行连接Oracle数据库时,Idea报错: Error : java 不支持发行版本5
  • 原文地址:https://www.cnblogs.com/lilin0719/p/5239847.html
Copyright © 2020-2023  润新知