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

  • 相关阅读:
    C#中判断是否为数值
    html中网页自动刷新设置
    html中多行文本及文件提交
    商品库存秒杀方案总结
    记一次asp.net core 线上崩溃解决总结
    Eova 怎么放在 Docker中,使用阿里云流水线构建Eova!!
    阿里云 asp.net core nginx 单机部署
    Tidb go mac 上开发环境搭建
    jexus+.netcore+identityserver4 部署支持ssl(https)
    使用mha 构建mysql高可用碰到几个问题
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/5573002.html
Copyright © 2011-2022 走看看