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 {
      }

  • 相关阅读:
    de1ctf_2019_weapon
    ciscn_2019_s_6
    用 Blend 给Windows Phone 应用创建 示例数据
    (转) Wp7 list 中列表项多样化的解决方案-Custom DataTemplateSelector
    Android开发之Java集合类性能分析
    WriteableBitmap 给透明的控件截图的问题
    VS 2013 配置OpenCV
    Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源
    HEAP CORRUPTION DETECTED :after Normal block 错误
    Visual C++ 的代码折叠
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/5573002.html
Copyright © 2011-2022 走看看