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 |