zoukankan      html  css  js  c++  java
  • maven项目Dao层优化

      平时我们习惯一个实体类就对应一个dao类,这样做,增删改查都大同小异,只是实体类对象不一样而已,因此,我们可以把公用的方法抽取来,建立一个IBaseDao接口,如下: 

      public interface IBaseDao<T> {

      //增加
      public Serializable save(T o);
      //删除
      public void delete(T o);
      //更改
      public void update(T o);
      //查找(单个)
      public T get(String hql,Map<String,Object> params);
      //查找列表
      public List<T> find(String hql);
      //根据条件查找
      public List<T> find(String hql,Map<String,Object> params);

      }

    对应的实现类:BaseDao 

      @Repository("baseDao")
      public class BaseDaoImp<T> implements IBaseDao<T> {

      @Resource
      private SessionFactory sessionFactory;
      public Serializable save(T o) {
      return sessionFactory.getCurrentSession().save(o);
      }

      public void delete(T o) {
      sessionFactory.getCurrentSession().delete(o);
      }

      public void update(T o) {
      sessionFactory.getCurrentSession().update(o);
      }

      @SuppressWarnings("unchecked")
      public T get(String hql, Map<String, Object> params) {
      Query q=sessionFactory.getCurrentSession().createQuery(hql);
      if(params!=null&&!params.isEmpty()){
      for(String key:params.keySet()){
      q.setParameter(key, params.get(key));
      }
      }
      List<T> l=q.list();
      if(l!=null&&l.size()>0){
      return l.get(0);
      }
      return null;
      }

      @SuppressWarnings("unchecked")
      public List<T> find(String hql) {
      return sessionFactory.getCurrentSession().createQuery(hql).list();
      }

      @SuppressWarnings("unchecked")
      public List<T> find(String hql, Map<String, Object> params) {
      Query q=sessionFactory.getCurrentSession().createQuery(hql);
      if(params!=null&&!params.isEmpty()){
      for(String key:params.keySet()){
      q.setParameter(key, params.get(key));
      }
      }
      return q.list();
      }
      }

     每一个实体类对应的接口只要去继承基接口IBaseDao,而实体类去继承BaseDaoImp类 ,同时实现对应的接口即可,这样大大减少了代码量,如下: 

      public interface IUserDao extends IBaseDao<Tuser> {

      }

     @Repository("userDao")
      public class UserDao extends BaseDaoImp<Tuser> implements IUserDao {
      }

  • 相关阅读:
    tar命令,vi编辑器
    Linux命令、权限
    Color Transfer between Images code实现
    利用Eclipse使用Java OpenCV(Using OpenCV Java with Eclipse)
    Matrix Factorization SVD 矩阵分解
    ZOJ Problem Set
    Machine Learning
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/5573002.html
Copyright © 2011-2022 走看看