文档章节

数据访问层具体实现

app1234
 app1234
发布于 2016/06/28 09:09
字数 1112
阅读 7
收藏 0

package com.soa.fht.dao.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import com.soa.fht.dao.BaseDao;

/**
 * 
 * @author caojianqiang
 * @version 1.0
 */
@Repository
public class BaseDaoImpl implements BaseDao{
    
    private static final Logger logger = Logger.getLogger(BaseDaoImpl.class);
    
    @Resource(name="sessionFactory")
    private SessionFactory sessionFactory;

    @Override
    public void add(Object object) throws Exception {
        // TODO Auto-generated method stub
        this.sessionFactory.getCurrentSession().save(object);
    }

    @Override
    public void delete(Object object) throws Exception {
        // TODO Auto-generated method stub
        this.sessionFactory.getCurrentSession().delete(object);
    }

    @Override
    public void update(Object object) throws Exception {
        // TODO Auto-generated method stub
        this.sessionFactory.getCurrentSession().update(object);
    }

    @Override
    public Object get(Class entityClass, Serializable id) throws Exception {
        // TODO Auto-generated method stub
        return this.sessionFactory.getCurrentSession().get(entityClass, id);
    }

    @Override
    public void addAll(List list) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        if(list!=null && list.size()>0){
            for(int i=0; i<list.size(); i++){
                if(i%20==0){
                    session.flush();
                    session.clear();
                }
                session.save(list.get(i));
            }
        }
    }

    @Override
    public void deleteAll(List list) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        if(list!=null && list.size()>0){
            for(int i=0; i<list.size(); i++){
                if(i%20==0){
                    session.flush();
                    session.clear();
                }
                session.delete(list.get(i));
            }
        }
    }

    @Override
    public void updateAll(List list) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        if(list!=null && list.size()>0){
            for(int i=0; i<list.size(); i++){
                if(i%20==0){
                    session.flush();
                    session.clear();
                }
                session.update(list.get(i));
            }
        }
    }

    @Override
    public void executeUpdate(String hql, Object[] parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        query.executeUpdate();
    }

    @Override
    public void executeUpdateByMap(String hql, Map<String, Object> parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        query.executeUpdate();
    }

    @Override
    public List<Object[]> queryListArray(String hql, Object[] parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    @Override
    public List<Object[]> queryListArrayByMap(String hql,
            Map<String, Object> parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        return query.list();
    }

    @Override
    public Object queryBean(String hql, Object[] parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        List result = query.list();
        if(result!=null && result.size()>0){
            return result.get(0);
        }
        return null;
    }

    @Override
    public Object queryBeanByMap(String hql, Map<String, Object> parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        List result =  query.list();
        if(result!=null && result.size()>0){
            return result.get(0);
        }
        return null;
    }

    @Override
    public List queryListBean(String hql, Object[] parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    @Override
    public List queryListBeanByMap(String hql, Map<String, Object> parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        return query.list();
    }

    @Override
    public Object queryUniqueResult(String hql, Object[] parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.uniqueResult();
    }

    @Override
    public Object queryUniqueResultByMap(String hql, Map<String, Object> parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        return query.uniqueResult();
         
    }

    @Override
    public List executePrepareCall(String hql, Object[] parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    @Override
    public List executePrepareCallByMap(String hql, Map<String, Object> parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        return query.list();
    }

    @Override
    public List executeQueryByPage(String hql, int pageNow, int pageSize,
            Object[] parameters) throws Exception {
//        System.out.println(hql);
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        query.setFirstResult((pageNow-1)*pageSize);
        query.setMaxResults(pageSize);
        return query.list();
    }

    @Override
    public List executeQueryByPageByMap(String hql, int pageNow, int pageSize,
            Map<String, Object> parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        query.setFirstResult((pageNow-1)*pageSize);
        query.setMaxResults(pageSize);
        return query.list();
    }

    @Override
    public List executeQueryByPageByMapSQL(String hql, int pageNow,
            int pageSize, Map<String, Object> parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        query.setFirstResult((pageNow-1)*pageSize);
        query.setMaxResults(pageSize);
        return query.list();
    }

    @Override
    public void executeUpdateByMapBySQL(String hql,
            Map<String, Object> parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        query.executeUpdate();
    }
    
    @Override
    public Object queryBeanBySql(String hql, Object[] parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        List result = query.list();
        if(result!=null && result.size()>0){
            return result.get(0);
        }
        return null;
    }

    @Override
    public List executeQueryBySQL(String hql, int pageNow, int pageSize,
            Object[] parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        query.setFirstResult((pageNow-1)*pageSize);
        query.setMaxResults(pageSize);
        return query.list();
    }

    @Override
    public Object queryUniqueResultBySQL(String hql, Object[] parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.uniqueResult();
    }

    @Override
    public List executeQueryByListBeanSQL(String hql, Object[] parameters)
            throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && parameters.length>0){
            for(int i=0; i<parameters.length; i++){
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    @Override
    public Object queryUniqueResultByMapSQL(String hql,
            Map<String, Object> parameters) throws Exception {
        // TODO Auto-generated method stub
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createSQLQuery(hql);
        if(parameters!=null && !parameters.isEmpty()){
            for (String key : parameters.keySet()) {
                query.setParameter(key, parameters.get(key));
            }
        }
        return query.uniqueResult();
    }
}
 

© 著作权归作者所有

app1234
粉丝 0
博文 2
码字总数 2663
作品 0
万州
程序员
私信 提问
说说 Spring DAO 的设计思想

DAO (Data Access Object )是访问数据的对象,它不但屏蔽了不同的数据存储介质(数据库、文件或 LDAP 等),也屏蔽了具体的实现技术 。 我们只要为数据访问定义好 DAO 接口,然后使用具体技...

deniro
2018/09/23
0
0
微型项目实践(7):数据访问的定义

上一篇中我们分析了实体类,这一篇我们来看看数据访问是怎么设计的。 从系统结构图中可以看出,到目前为止我们没有任何关于数据库访问的实现部分,而Business则仅仅是给出了IDatabase和IEnti...

吞吞吐吐的
2017/10/18
0
0
熟悉DAO模式的用法

今天主要是使用DAO模式。 DAO模式通过对业务层提供数据抽象层接口,实现了以下目标: 1. 数据存储逻辑的分离 通过对数据访问逻辑进行抽象,为上层机构提供抽象化的数据访问接口。业务层无需关...

陈嘻嘻哈哈
2015/07/21
0
0
Winform开发框架之数据访问层的设计

我在前面几篇介绍过我的Winform开发框架的相关内容,其中主要集中在界面展现以及各层的总体设计上,还没有空来得及深入进行各个重要细节的讲解,今天我们来介绍、讨论下我的Winform开发框架之...

长平狐
2012/06/11
395
0
Winform开发框架之数据访问层的设计

我在前面几篇介绍过我的Winform开发框架的相关内容,其中主要集中在界面展现以及各层的总体设计上,还没有空来得及深入进行各个重要细节的讲解,今天我们来介绍、讨论下我的Winform开发框架之...

长平狐
2012/08/22
100
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
15分钟前
5
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
40分钟前
2
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
43分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
48分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部