opsforlist 存在贼覆盖_morphia基本API方法

这是一个实现了Morphia数据访问对象(DAO)的基本类,用于MongoDB的数据操作。类中包含了创建查询、更新操作、保存、删除、查找、计数等方法,支持通过Key获取ID值,以及根据条件查询和更新数据。
摘要由CSDN通过智能技术生成

package com.google.code.morphia.dao;

import java.lang.reflect.ParameterizedType;

import java.util.ArrayList;

import java.util.List;

import com.google.code.morphia.Datastore;

import com.google.code.morphia.DatastoreImpl;

import com.google.code.morphia.Key;

import com.google.code.morphia.Morphia;

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

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

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

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

import com.mongodb.DBCollection;

import com.mongodb.Mongo;

import com.mongodb.WriteConcern;

import com.mongodb.WriteResult;/**

* @author Olafur Gauti Gudmundsson

* @author Scott Hernandez*/@SuppressWarnings({"unchecked", "rawtypes"})public class BasicDAO implements DAO{protected ClassentityClazz;protectedDatastoreImpl ds;public BasicDAO(ClassentityClass, Mongo mongo, Morphia morphia, String dbName) {

initDS(mongo, morphia, dbName);

initType(entityClass);

}public BasicDAO(ClassentityClass, Datastore ds) {this.ds =(DatastoreImpl) ds;

initType(entityClass);

}/**

*

Only calls this from your derived class when you explicitly declare the generic types with concrete classes

*

* {@code class MyDao extends DAO}

*

**/

protectedBasicDAO(Mongo mongo, Morphia morphia, String dbName) {

initDS(mongo, morphia, dbName);

initType(((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));

}protectedBasicDAO(Datastore ds) {this.ds =(DatastoreImpl) ds;

initType(((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));

}protected void initType(Classtype) {this.entityClazz =type;

ds.getMapper().addMappedClass(type);

}protected voidinitDS(Mongo mon, Morphia mor, String db) {

ds= newDatastoreImpl(mor, mon, db);

}/**

* Converts from a List to their id values

*

* @param keys

* @return*/

protected List> keysToIds(List>keys) {

ArrayList ids= new ArrayList(keys.size() * 2);for (Keykey : keys)

ids.add(key.getId());returnids;

}/** The underlying collection for this DAO*/

publicDBCollection getCollection() {returnds.getCollection(entityClazz);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#createQuery()*/

public QuerycreateQuery() {returnds.createQuery(entityClazz);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#createUpdateOperations()*/

public UpdateOperationscreateUpdateOperations() {returnds.createUpdateOperations(entityClazz);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#getEntityClass()*/

public ClassgetEntityClass() {returnentityClazz;

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#save(T)*/

public Keysave(T entity) {returnds.save(entity);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#save(T, com.mongodb.WriteConcern)*/

public Keysave(T entity, WriteConcern wc) {returnds.save(entity, wc);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#updateFirst(com.google.code.morphia.query.Query, com.google.code.morphia.query.UpdateOperations)*/

public UpdateResults updateFirst(Query q, UpdateOperationsops) {returnds.updateFirst(q, ops);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#update(com.google.code.morphia.query.Query, com.google.code.morphia.query.UpdateOperations)*/

public UpdateResults update(Query q, UpdateOperationsops) {returnds.update(q, ops);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#delete(T)*/

publicWriteResult delete(T entity) {returnds.delete(entity);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#delete(T, com.mongodb.WriteConcern)*/

publicWriteResult delete(T entity, WriteConcern wc) {returnds.delete(entity, wc);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#deleteById(K)*/

publicWriteResult deleteById(K id) {returnds.delete(entityClazz, id);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#deleteByQuery(com.google.code.morphia.query.Query)*/

public WriteResult deleteByQuery(Queryq) {returnds.delete(q);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#get(K)*/

public T get(K id) {return ds.get(entityClazz, id);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#findIds(java.lang.String, java.lang.Object)*/

public ListfindIds(String key, Object value) {return (List) keysToIds(ds.find(entityClazz, key, value).asKeyList());

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#findIds()*/

public ListfindIds() {return (List) keysToIds(ds.find(entityClazz).asKeyList());

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#findIds(com.google.code.morphia.query.Query)*/

public List findIds(Queryq) {return (List) keysToIds(q.asKeyList());

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#exists(java.lang.String, java.lang.Object)*/

publicboolean exists(String key, Object value) {returnexists(ds.find(entityClazz, key, value));

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#exists(com.google.code.morphia.query.Query)*/

public boolean exists(Queryq) {return ds.getCount(q) > 0;

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#count()*/

public longcount() {returnds.getCount(entityClazz);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#count(java.lang.String, java.lang.Object)*/

public longcount(String key, Object value) {returncount(ds.find(entityClazz, key, value));

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#count(com.google.code.morphia.query.Query)*/

public long count(Queryq) {returnds.getCount(q);

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#findOne(java.lang.String, java.lang.Object)*/

publicT findOne(String key, Object value) {return ds.find(entityClazz, key, value).get();

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#findOne(com.google.code.morphia.query.Query)*/

public T findOne(Queryq) {return q.get();

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#find()*/

public QueryResultsfind() {returncreateQuery();

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#find(com.google.code.morphia.query.Query)*/

public QueryResults find(Queryq) {returnq;

}/*(non-Javadoc)

* @see com.google.code.morphia.DAO#getDatastore()*/

publicDatastore getDatastore() {returnds;

}public voidensureIndexes() {

ds.ensureIndexes(entityClazz);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值