MongoDB的java操作工具

之前看到一些mongoDB的java操作方式,但是要不做反射,要不就会创建很多操作对象,这样比较麻烦,下面这种方式只需要一个操作对象就可以获取所有的Entity,直接上代码

public interface MongoDao<T> {
    /**
     * 通过条件查询实体(集合)
     *
     * @param query
     */
    public List<T> find(Query query, Class<T> entity) ;

    /**
     * 通过条件查询实体(集合)
     *
     */
    public List<T> findAll(Class<T> entity) ;

    /**
     * 通过一定的条件查询一个实体
     *
     * @param query
     * @return
     */
    public T findOne(Query query, Class<T> entity) ;

    /**
     * 保存一个对象到mongodb
     *
     * @param entity
     * @return
     */
//    public T save(T entity) ;

    /**
     * 通过ID获取记录
     *
     * @param id
     * @return
     */
    public T findById(String id, Class<T> entity) ;

    /**
     * 通过ID获取记录,并且指定了集合名(表的意思)
     *
     * @param id
     * @param collectionName
     *            集合名
     * @return
     */
    public T findById(String id, String collectionName, Class<T> entity) ;

    /**
     * 分页查询
     * @param page
     * @param query
     * @return
     */
    public Page<T> findPage(Page<T> page,Query query, Class<T> entity);

    /**
     * 求数据总和
     * @param query
     * @return
     */
    public long count(Query query, Class<T> entity);

}

实现类

public class MongoManager<T> implements MongoDao<T> {

    protected MongoTemplate mongoTemplate;

    public MongoManager(String host, int port, String databaseName) {
        try {
            mongoTemplate = new MongoTemplate(new Mongo(host, port), databaseName);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    @Override
    public List<T> find(Query query, Class entity) {
        return mongoTemplate.find(query, entity);
    }

    @Override
    public List<T> findAll(Class<T> entity) {
        return mongoTemplate.findAll(entity);
    }

    @Override
    public T findOne(Query query, Class<T> entity) {
        return mongoTemplate.findOne(query, entity);
    }

    @Override
    public T findById(String id, Class<T> entity) {
        return mongoTemplate.findById(id, entity);
    }

    @Override
    public T findById(String id, String collectionName, Class<T> entity) {
        return mongoTemplate.findById(id, entity, collectionName);
    }

    @Override
    public Page<T> findPage(Page<T> page, Query query, Class<T> entity) {
        long count = count(query, entity);

//        page.setTotal(count);
        int pageNumber = page.getNumber();
        int pageSize = page.getSize();
        query.skip((pageNumber - 1) * pageSize).limit(pageSize);
        List<T> rows = this.find(query, entity);
        page = new PageImpl(rows);
//        page.setRows(rows);
        return page;
    }

    @Override
    public long count(Query query, Class<T> entity) {
        return mongoTemplate.count(query, entity);
    }
}
调用:
mongoManager.findAll(XXX.class);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值