使用Morphia的BasicDAO来访问Mongodb

   1:简介

        DAO封装了存储和调用的代码,控制类只要注入一个DAO对象,使用它就不需要关心数据持久化和恢复了。
       Morphia基于DAO接口提供了BasicDAO实现类,它使用Datastore对象来存储和查询POJO对象,可以通过BasicDAO的方法来create/update, read, and delete 对象,可以参考它提供的例子和模式。
意味着你的DAO类只要继承BasicDAO,只需要写一个普通的查询方法,就能查询你自己的对象。
2:使用

   在需要的XXXDAO类去继承BasicDAO 添加泛型即可 内部有很多已经封装好的方法

import java.util.List;   

     

import com.easyway.mongodb.morphia.basic.Hotel;   

import com.google.code.morphia.Morphia;   

import com.google.code.morphia.dao.BasicDAO;   

import com.google.code.morphia.query.UpdateOperations;   

import com.mongodb.Mongo;   

/** 

 * 数据访问层类的使用 

 */   

public class HotelDAO  extends BasicDAO<Hotel, ObjectId> {   

     public HotelDAO(Datastore ds) {   

        super(ds);   

     }   

    /**

 插入

*/

   public Hotel saveHotel(Hotel hotel){

     save(hotel)

    }

/**

 删除

*/

 public void deleteHotel(Hotel hotel){

  delete(hotel);

}

/**

更改

*/

public void updateHotel(final Query<T> query, final UpdateOperations<T> ops)

{

update(query, ops);

}

  /** 

     * 统计四星级以上酒店数量 

     * @return 

     */   

     public long countHotel(){   

            return count(createQuery().field("stars").greaterThanOrEq(4));   

     }   

     /** 

      * 查询酒店 

      * @return 

      */   

     public List<Hotel> queryHotelPhone(){   

         return createQuery().field("phoneNumbers").sizeEq(1).asList();   

     }   

         

     /** 

      * 查询酒店 

      * @param hotel 

      */   

     public List<Hotel> queryHotel(Hotel hotel){   

         return find(createQuery().filter("stars", 4).order("address.address_street")).asList();    

     }   

     /** 

      * 修改酒店信息 

      * @param hotel 

      */   

     public void batchUpdateHotel(){   

            UpdateOperations<Hotel> mods = createUpdateOperations().inc("stars", 1);   

            update(createQuery().filter("stars", 4), mods);   

     }   

}

猜你喜欢

转载自blog.csdn.net/zhanaolu4821/article/details/84991356