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: 可以使用分页工具,等其他对数据的操作,一般也是用?来占位

}

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

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

  2. Java中Action层、Service层、Modle层和Dao层的功能区分

    一.Java中Action层.Service层.Modle层和Dao层的功能区分: 首先,这是现在最基本的分层方式,结合了SSH架构. modle层就是对应的数据库表的实体类.(即domain) Da ...

  3. java中Action层、Service层和Dao层的功能区分

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

  4. javaEE中关于dao层和services层的理解

    javaEE中关于dao层和services层的理解 入职已经一个多月了,作为刚毕业的新人,除了熟悉公司的项目,学习公司的框架,了解项目的一些业务逻辑之外,也就在没学到什么:因为刚入职, 带我的那个师 ...

  5. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转

    表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的 ,DAO层就是将访问数 ...

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

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

  7. java中dao层和service层的区别是什么?

    首先解释面上意思,service是业务层,dao是数据访问层.呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用 ...

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

    Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Servi ...

  9. 深入理解--SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用

    SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保持一致 ...

随机推荐

  1. mongodb-索引

    说明:创建索引时,列名:int 中的int数字指的是正序或者倒序,如果是1表明是正序,-1表示倒序 1.查询collection上的索引 db.users.getIndexes() 2.查询当前的db ...

  2. Linux用sendmail发信失败,提示Connection refused by [127.0.0.1]

    现象: Linux用sendmail发信失败,提示Connection refused by [127.0.0.1] 29 14:10:44 iZ257p7xxilZ sendmail[3395]: ...

  3. asp.net ajax与jquery的冲突问题解决

    在网上看到有网友说,用了updatepannel这个asp.net ajax异步更新面板后,javascript或者jquery代码不起作用,实际上,可以在updatepannel的触发器中进行设置解 ...

  4. Ubuntu 下 kazam 录屏 没声音解决方案

    以下内容参考https://www.youtube.com/watch?v=5NZ0qwp2L04,我做了些修改,让它好懂些. 在应用商店里搜索 PulseAudio Volume Control 在 ...

  5. 四核exynos4412开发板使用网线上网注意事项

    问:RP4412开发板板子可以插网线上网? 答:可以.支持WIFI.LAN.3/4G上网的.插网线没? 问:我插了,他还是提示让我连wifi. 答:你是上网页还是其他的APP. 网页可以直接打开,有部 ...

  6. Singleton Pattern单例模式

    单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例.Java里面实现的单例是一个虚拟机的范围,因为装载类的功能是虚拟机的,所以一个虚拟机在通过自己的 Cla ...

  7. NSDate 时间

    NSDate *date=[NSDate date]; NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; formatter.date ...

  8. 【Linux】【通信】1.ping不通

    关于为什么ping不通有很多种原因,但直接的表象就网络之间没有成功进行通讯: 在构建虚拟机和win之间的交互时,主要使用了3种网络模式: 桥接bridge VMnet0 主机host     VMne ...

  9. Bootstrap<基础九>辅助类

    Bootstrap 中的一些可能会派上用场的辅助类. 文本 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述   .text-muted "text-mu ...

  10. 【转】MySQL中varchar最大长度是多少?

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...