package org.chaoqian.test;
import java.util.ArrayList;
import java.util.List;
import org.bson.BasicBSONObject;
import org.chaoqian.model.Address;
import org.chaoqian.model.Hotel;
import org.junit.Test;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Key;
import org.mongodb.morphia.Morphia;
import org.mongodb.morphia.query.Query;
import com.mongodb.MongoClient;
public class MorphiaTest {
Morphia morphia = new Morphia();
MongoClient mongoClient = new MongoClient("192.168.2.104",27017);
Datastore ds = morphia.createDatastore(mongoClient, "test");
/**
* 生成指定个数的hotelList
* <p>
*
* @Title: getHotelList
* </p>
*
* @param num
* @return
*/
private static List<Hotel> getHotelList(int num) {
List<Hotel> list = new ArrayList<Hotel>();
for (int i = 30; i < num; i++) {
Hotel hotel = new Hotel();
hotel.setName("编号为[" + i + "]的旅店");
hotel.setStars(i % 10);
Address address = new Address();
address.setCountry("中国");
address.setCity("北京");
address.setStreet("上地南路");
address.setPostCode("10000" + (i % 10));
hotel.setAddress(address);
list.add(hotel);
}
return list;
}
/**
* 将hotelList插入数据库
* <p>
*
* @Title: saveHotelList
* </p>
*
* @param hotelDAO
* @param hotelList
*/
@Test
public void saveTest() {
List<Hotel> hotelList = getHotelList(40);
for (Hotel hotel : hotelList) {
// Key<Hotel> key=hotelDAO.save(hotel,WriteConcern.SAFE);
Key<Hotel> key = ds.save(hotel);
System.out.println("id为[" + key.getId() + "]的记录已被插入");
}
}
@Test
public void saveTest2() {
Hotel hotel = new Hotel();
hotel.setName("hotel旅店");
hotel.setStars(5);
Address address = new Address();
address.setCountry("中国");
address.setCity("北京");
address.setStreet("上地南路");
address.setPostCode("10000001");
ds.save(address);
hotel.setAddressid(address);
//hotel.setAddress(address);
Key<Hotel> key = ds.save(hotel);
System.out.println("id为[" + key.getId() + "]的记录已被插入");
}
@Test
public void findTest() {
Hotel hotel = new Hotel();
hotel.setName("hotel旅店");
hotel.setStars(5);
Address address = new Address();
address.setCountry("中国");
address.setCity("北京");
address.setStreet("上地南路");
address.setPostCode("10000001");
hotel.setAddress(address);
Query<Hotel> filter = ds.createQuery(Hotel.class).filter("star >",4).filter("star <", 6);
ds.find(Hotel.class);
for (Hotel hotel2 : filter) {
System.out.println(hotel2);
}
//ds.createQuery(Hotel.class).
}
}
-----------------------------------------------------------------------------------------------
package org.chaoqian.model;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Embedded;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Reference;
@Entity(value="hotel")
public class Hotel {
@Id
private ObjectId id;
private String name;
private int stars;
@Embedded
private Address address;
@Reference()
private Address addressid;
public Hotel() {
super();
// TODO Auto-generated constructor stub
}
public Hotel(ObjectId id, String name, int stars, Address address) {
super();
this.id = id;
this.name = name;
this.stars = stars;
this.address = address;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getStars() {
return stars;
}
public void setStars(int stars) {
this.stars = stars;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Address getAddressid() {
return addressid;
}
public void setAddressid(Address addressid) {
this.addressid = addressid;
}
@Override
public String toString() {
return "Hotel [id=" + id + ", name=" + name + ", stars=" + stars + ", address=" + address + "]";
}
}
------------------------------------------------------------------
package org.chaoqian.model;
import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Embedded;
import org.mongodb.morphia.annotations.Id;
@Embedded
public class Address {
@Id
private ObjectId id;
private String street;
private String city;
private String postCode;
private String country;
public Address() {
super();
// TODO Auto-generated constructor stub
}
public Address(String street, String city, String postCode, String country) {
super();
this.street = street;
this.city = city;
this.postCode = postCode;
this.country = country;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
@Override
public String toString() {
return "Address [street=" + street + ", city=" + city + ", postCode=" + postCode + ", country=" + country + "]";
}
}