设为首页 加入收藏

TOP

使用morphia对基于mongodb应用开发 (二)
2014-11-24 07:14:02 来源: 作者: 【 】 浏览:15
Tags:使用 morphia 基于 mongodb 应用开发
;
this.loc = loc;
}

public Place() {
}

@Override
public String toString() {
return "Place [loc=" + Arrays.toString(loc) + ", name=" + name + "]";
}
//省略getter,setters
}

因为morphia提供了BasicDao,所以这里就准备一个简单的Dao:


package morphia.dao;
import java.util.List;
import morphia.model.Place;
import morphia.model.Store;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;

public class StoreDao extends BasicDAO {
public StoreDao(Datastore ds) {
super(ds);
ds.ensureIndexes();
ds.ensureCaps();
}
/**
* 查找离p 最近的5个店铺
* @param p
* @return
*/
public List findNearPlace(Place p) {
return ds.createQuery(Store.class).field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();
}
/**
* 查找离p 最近的5个肯德基店
* @param p
* @return
*/
public List findKFCNearPlace(Place p) {
return ds.createQuery(Store.class).filter("name", "肯德基").field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();
}
/**
* 删除所有店铺
*/
public void deleteAllStore(){
Query q = ds.createQuery(Store.class);
ds.delete(q);
}
}

package morphia.dao;
import java.util.List;
import morphia.model.Place;
import morphia.model.Store;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.dao.BasicDAO;
import com.google.code.morphia.query.Query;

public class StoreDao extends BasicDAO {
public StoreDao(Datastore ds) {
super(ds);
ds.ensureIndexes();
ds.ensureCaps();
}
/**
* 查找离p 最近的5个店铺
* @param p
* @return
*/
public List findNearPlace(Place p) {
return ds.createQuery(Store.class).field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();
}
/**
* 查找离p 最近的5个肯德基店
* @param p
* @return
*/
public List findKFCNearPlace(Place p) {
return ds.createQuery(Store.class).filter("name", "肯德基").field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();
}
/**
* 删除所有店铺
*/
public void deleteAllStore(){
Query q = ds.createQuery(Store.class);
ds.delete(q);
}
}


接下来就可以写测试类了:


package mongo.morphia.test;
import java.util.List;
import morphia.dao.PlaceDao;
import morphia.dao.StoreDao;
import morphia.model.Place;
import morphia.model.Store;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.mongodb.Mongo;
public class StoreDaoTest {
public static String[] STORE_TYPE = {"肯德基","麦当劳","必胜客","吉野家","蒸功夫"};
public static StoreDaoTest m = new StoreDaoTest();
static DaoHolder daoHolder = new DaoHolder();
//测试保存,准备一千家店铺的数据
public void testSave(){
long start = System.currentTimeMillis();
for( int i = 0; i < 1000; i++){
double x = Math.round(Math.random() * 10000)/100.0D
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于输出的数据库审计和三层数据.. 下一篇基于MongoDB GridFS的图片存储

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)