1.BaseDao接口:

//使用BaseDao<T> 泛型 ,在service中注入的时候,只需要将T换为对应的bean即可

public interface BaseDao<T> {

public int save(T t);

public int update(String hql, Object[] paramlist);

public int delete(String hql, Object[] paramlist);

public int countAll(String hql, Object[] paramlist);

public int countAll(String hql, String key, Object[] ids);

public int countAll(String hql, Object[] paramlist, String key, Object[] ids);
    
    public int countAllBysql(String hql, T t, Object[] paramlist, String key, Object[] ids);

public Map<String, Object> get(String hql);

public Map<String, Object> get(String hql, Object[] paramlist);

public int updateBySql(String hql, Object[] paramlist);

public List<Map<String, Object>> listAll(String hql, String parkey,
            Object[] ids);

public List<Map<String, Object>> listAllPage(String hql, String parkey,
            Object[] ids, Object[] paramlistPage);

public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, String key, Object[] ids, Object[] paramlistPage);
    
    public List<Map<String, Object>> listAllPageBysql(String hql,T t,
            Object[] paramlist, String key, Object[] ids, Object[] paramlistPage);

public List<Map<String, Object>> listAll(String hql);

public List<T> listAllBySql(String hql, T t, Object[] paramlist);

public List<Map<String, Object>> listAll(String hql, Object[] paramlist);

public List<T> listObject(String hql, Object[] paramlist);

public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, Object[] paramlistPage);

public List<Map<String, Object>> listAllPage(String hql, String key,
            Object[] ids);

public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, String key, Object[] ids);
}

2.接口的实现 BaseDaoimpl

@Repository("baseDao")
public class BaseDaoImpl<T> implements BaseDao<T> {

protected static final Logger LOGGER = LoggerFactory
            .getLogger(BaseDaoImpl.class);

@Autowired
    @Qualifier("sessionFactory")
    private SessionFactory sessionFactory;

public Session getSession() {
        return sessionFactory.getCurrentSession();
    }

@Override
    public int save(T t) {
        return (int) getSession().save(t);
    }

@Override
    public int update(String hql, Object[] paramlist) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        return query.executeUpdate();
    }

@Override
    public int updateBySql(String hql, Object[] paramlist) {
        Query query = getSession().createSQLQuery(hql);
        setParameters(query, paramlist);
        return query.executeUpdate();
    }

@Override
    public int delete(String hql, Object[] paramlist) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        return query.executeUpdate();
    }

@SuppressWarnings("unchecked")
    @Override
    public int countAll(String hql, Object[] paramlist) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        List<Map<String, Object>> results = query.list();
        return results.size();
    }

@SuppressWarnings("unchecked")
    @Override
    public int countAll(String hql, String key, Object[] ids) {
        Query query = getSession().createQuery(hql);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results.size();
    }

@SuppressWarnings("unchecked")
    @Override
    public int countAll(String hql, Object[] paramlist, String key, Object[] ids) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results.size();
    }
    
    @SuppressWarnings("unchecked")
    @Override
    public int countAllBysql(String hql, T t, Object[] paramlist, String key, Object[] ids) {
        Query query = getSession().createSQLQuery(hql).addEntity(t.getClass());
        setParameters(query, paramlist);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results.size();
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAll(String hql) {
        Query query = getSession().createQuery(hql);
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAll(String hql, Object[] paramlist) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAll(String hql, String key,
            Object[] ids) {
        Query query = getSession().createQuery(hql);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<T> listAllBySql(String hql, T t, Object[] paramlist) {
        Query query = getSession().createSQLQuery(hql).addEntity(t.getClass());// ;
        setParameters(query, paramlist);
        List<T> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<T> listObject(String hql, Object[] paramlist) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        List<T> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, Object[] paramlistPage) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        query.setFirstResult(Integer.parseInt(paramlistPage[0] + ""));
        query.setMaxResults(Integer.parseInt(paramlistPage[1] + ""));
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPage(String hql, String key,
            Object[] ids, Object[] paramlistPage) {
        Query query = getSession().createQuery(hql);
        setInParameters(query, key, ids);
        query.setFirstResult(Integer.parseInt(paramlistPage[0] + ""));
        query.setMaxResults(Integer.parseInt(paramlistPage[1] + ""));
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPage(String hql, String key,
            Object[] ids) {
        Query query = getSession().createQuery(hql);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, String key, Object[] ids, Object[] paramlistPage) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        setInParameters(query, key, ids);
        query.setFirstResult(Integer.parseInt(paramlistPage[0] + ""));
        query.setMaxResults(Integer.parseInt(paramlistPage[1] + ""));
        List<Map<String, Object>> results = query.list();
        return results;
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPageBysql(String hql,T t,
            Object[] paramlist, String key, Object[] ids, Object[] paramlistPage) {
        Query query = getSession().createSQLQuery(hql).addEntity(t.getClass());
        setParameters(query, paramlist);
        setInParameters(query, key, ids);
        query.setFirstResult(Integer.parseInt(paramlistPage[0] + ""));
        query.setMaxResults(Integer.parseInt(paramlistPage[1] + ""));
        List<Map<String, Object>> results = query.list();
        return results;
    }
    
    @SuppressWarnings("unchecked")
    @Override
    public Map<String, Object> get(String hql) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        Query query = getSession().createQuery(hql);
        List<Map<String, Object>> results = query.list();
        if (results.size() > 0) {
            resultMap = results.get(0);
        }
        return resultMap;
    }

@SuppressWarnings("unchecked")
    @Override
    public Map<String, Object> get(String hql, Object[] paramlist) {
        Map<String, Object> resultMap = new HashMap<String, Object>();
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        List<Map<String, Object>> results = query.list();
        if (results.size() > 0) {
            resultMap = results.get(0);
        }
        return resultMap;
    }

protected void setParameters(Query query, Object[] paramlist) {
        if (paramlist != null) {
            for (int i = 0; i < paramlist.length; i++) {
                if (paramlist[i] instanceof Date) {
                    query.setTimestamp(i, (Date) paramlist[i]);
                } else if (paramlist[i] instanceof Double) {
                    query.setDouble(i, (double) paramlist[i]);
                } else {
                    query.setParameter(i, paramlist[i]);
                }
            }
        }
    }

protected void setInParameters(Query query, String key, Object[] ids) {
        if (ids.length > 0) {
            query.setParameterList(key, ids);
        }
    }

@SuppressWarnings("unchecked")
    @Override
    public List<Map<String, Object>> listAllPage(String hql,
            Object[] paramlist, String key, Object[] ids) {
        Query query = getSession().createQuery(hql);
        setParameters(query, paramlist);
        setInParameters(query, key, ids);
        List<Map<String, Object>> results = query.list();
        return results;
    }

//String hql :在service 中的hql语句     Object[] paramlist : hql中的字段,先用?占位    Object[] ids: 可以使用分页工具,等其他对数据的操作,一般也是用?来占位

}

转载于:https://www.cnblogs.com/2860755zcj/p/5039193.html

Hql 中 dao 层 以及daoimpl 层的代码,让mvc 模式更直观简洁相关推荐

  1. java中表示层 控制层 业务逻辑层 数据访问层

    控制层(controller):的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法: 业务层(service):需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数 ...

  2. view是视图层+action是控制层+service是业务层+dao是数据访问层。

    举例1:MVC 1)最上面的一层,是直接面向最终用户的"视图层"(View).它是提供给用户的操作界面,是程序的外壳. 2)最底下的一层,是核心的"数据层"(M ...

  3. 从Excel文件中找出在TXT文件中没有出现的 行之_代码片段

    #从data.txt(Excel文件)中找出一些不在target.txt(TXT文件)文件行中出现的行. #定义一个函数,判断ls中的每个单词是否出现在了mystring中了.如果全部都在,返回真de ...

  4. FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式

    理解 FleaPHP 中,MVC 模式是如何实现的,以及其特点,可以帮助你更好的运用 FleaPHP. 什么叫做设计模式? 简单来说,设计模式(Pattern)就是解决某一类问题的特定方法.由于这种特 ...

  5. JavaWeb课程复习资料(六)——DAO与DAOImpl层封装

    承接上文:JavaWeb课程复习资料(五)--配置Tomcat 目录 1.DAO层 2.DAOImpl层 1.DAO层 DAO层是接口层,故而需要使用[interface]修饰 源码如下: packa ...

  6. JAVA中Action层, Service层 ,model层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.model层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  7. java action dao_java中Action层、Service层和Dao层的功能区分

    一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...

  8. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  9. java domain层_java框架中的controller层、dao层、domain层、service层、view层

    1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...

最新文章

  1. CBNetV2:北大提出的复合主干网络,COCO成绩60.1%
  2. 关于Ubuntu运行级别、开机启动脚本的说明
  3. 《20年后,你靠什么生存(孙继滨)》讲座观后感
  4. java中位运算传参_java基础之位运算讲解于实战
  5. 计算机仿真保密,量子密钥分配方案的安全性研究及其计算机仿真
  6. 超简单的windows发包工具—小兵以太网测试仪
  7. 基于蒙特卡诺的风场景模型出力(Matlab代码实现)
  8. Python爬取必应图片2
  9. 【农业物联网】智慧农业模型应用多案例分享
  10. 创建动态的XML数据
  11. 微信跳跳代码php执行,微信跳一跳,能够直接运行的脚本
  12. 搜索引擎Google的小秘密
  13. 目标检测、追踪梳理:帧差法、光流法、背景减除法
  14. vue 移动端视频功能实现
  15. 牛客网C语言考试输入输出问题
  16. PIC16F887 单片机 PROTEUS 仿真 C程序 模拟电话拨号计算器 密码锁
  17. windows上在python玩耍深度学习资源合集
  18. java运维软件下载_开源运维自动化平台-opendevops
  19. 计算机网络(五)传输层详解
  20. 支付宝香港宣布开通与菲律宾的区块链汇款渠道

热门文章

  1. Windows - 通过注册表编辑器来删除多余盘符
  2. Google Gson 使用简介
  3. 在centos7中安装MySQL5.7
  4. (五)DTD验证XML文档
  5. 微信小程序:一个json帮你完成分享朋友圈图片
  6. 安装mariadb以及允许远程访问
  7. Netflix是如何构建代码的
  8. SecureCRT 使用指南
  9. mongodb副本集架构搭建
  10. 软件工程 - 团队博客第二阶段成绩