NoSQL 之 Morphia 操作 MongoDB (七)

2014-11-24 07:39:20 来源: 作者: 浏览: 20
toreTest {
private Mongo mongo;
private Morphia morphia;
private Datastore ds;

@Before
public void init() {
try {
mongo = new Mongo();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
morphia = new Morphia();
morphia.map(User.class);
ds = morphia.createDatastore(mongo, "temp");
}

private void print(Object o) {
if (o != null) {
System.out.println(o.toString());
}
}


/**
* function: 查询所有
* @author hoojo
* @createDate 2012-2-16 下午10:36:13
*/
private void query() {
Iterable it = ds.createQuery(User.class).fetch();
while(it.iterator().hasNext()) {
print("fetch: " + it.iterator().next());
}
}

@After
public void destory() {
mongo = null;
morphia = null;
ds = null;
System.gc();
}
}

2、 增删改CUD操作

/**
* function: CUD增删改
* @author hoojo
* @createDate 2012-2-16 下午10:46:08
*/
@Test
public void testCUD() {
// 添加测试数据
for (int i = 0; i < 50; i++) {
User u = new User(System.currentTimeMillis() + i, "test-" + i, ((i % 2 == 0) true: false), 18 + i, "china-gz#" + i);
print(ds.save(u));
}
//ds.delete(ds.createQuery(User.class));

List users = new ArrayList();
users.add(new User(1306907246518L, "zhangsan", true, 22, "china-gz"));
User user = new User(System.currentTimeMillis() + 3, "zhaoliu", true, 29, "china-beijin");
users.add(user);
users.add(new User(System.currentTimeMillis() + 6, "wangwu", true, 24, "china-shanghai"));
users.add(new User(System.currentTimeMillis() + 9, "lisi", true, 26, "china-wuhan"));
//添加集合
print("save: " + ds.save(users));

//添加数组
print("save: " + ds.save(users.toArray()));

this.query();
print("getKey: " + ds.find(User.class, "id", 1306907246518L).getKey());

//修改操作
UpdateOperations uo = ds.createUpdateOperations(User.class);

print("update: " + ds.update(ds.find(User.class, "id", 1306907246518L).getKey(), uo).getUpdatedCount());
uo.add("name", "zhaoliuliu").set("age", 29).set("sex", true).add("address", "gzz");
print("update: " + ds.update(ds.find(User.class, "id", 1306907246518L).getKey(), uo).getUpdatedCount());

print("update: " + ds.update(ds.createQuery(User.class).field("id").equal(1306907246518L), uo).getUpdatedCount());
print("update: " + ds.update(ds.find(User.class, "id", 1306907246518L), uo).getUpdatedCount());

uo = ds.createUpdateOperations(User.class);
uo.set("name", "zhaoqq").set("age", 29).set("sex", true).add("address", "fzz");
print("update: " + ds.update(ds.find(User.class, "id", 1306907246518L).get(), uo).getUpdatedCount());

print("update: " + ds.update(ds.createQuery(User.class).field("id").equal(1306907246518L), uo, true).getUpdatedCount());

// 修改第一个对象
print("updateFirst: " + ds.updateFirst(ds.createQuery(User.class).field("id").equal(1306907246518L), uo).getUpdatedCount());
//当参数createIfMissing为true的时候,如果修改的对象不存在就会添加这条数据,如果为false的情况下,不存在也不添加
print("updateFirst: " + ds.updateFirst(ds.createQuery
-->

评论

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