一、简介
spring-data-mongodb项目提供与mongdb文档数据库的集成,spring-data-mongodb提供了org.springframework.data.mongodb.core.MongoTemplate对mongdb的CRUD操作,包括对集成的对象映射文件和POJO之间的CRUD的操作。
二、MongDB文档数据库:添加
spring-data-mongodb的MongoTemplate提供两种文档存储方式:分别是save()和insert(),这两种的区别:
(1)、save:我们在新增文档时,如果有一个相同_ID文档时,会覆盖原来的。
(2)、insert:我们在新增文档时,如果有一个相同_ID文档时,就会新增失败。
1、save 和insert 具体语法介绍
save 方式:
1)void save (Object objectToSave) 保存文档到默认的集合。
2)void save(Object objectToSave, String collectionName) 对指定的集合进行保存。
insert方式:
1)void insert(Object objectToSave) 保存文档到默认的集合。
2)void insertAll(Object objectsToSave) 批量添加到默认的集合。
3)void insert(Object objectToSave, String collectionName) 对指定的集合进行保存。
2、spring-data-mongodb 实现对mongodb添加操作。
1)、实现一个基础通用接口,MongoBase<T>类文件
public interface MongoBase<T> {
// insert添加
public void insert(T object,String collectionName);
// save添加
public void save(T object,String collectionName);
//批量添加
public void insertAll(List<T> object);
}
2)、实现文档数据库结构体,(java实体对象)
/**
* 订单
* @author zhengcy
*
*/
public class Orders implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
//ID
private String id;
//订单号
private String onumber;
//日期
private Date date;
//客户名称
private String cname;
//订单
private List<Item> items;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getOnumber() {
return onumber;
}
public void setOnumber(String onumber) {
this.onumber = onumber;
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
}
/**
* 产品订购表
* @author zhengcy
*
*/
public class Item {
//数量
private Integer quantity;
//单价
private Double price;
//产品编码
private String pnumber;
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getPnumber() {
return pnumber;
}
public void setPnumber(String pnumber) {
this.pnumber = pnumber;
}
}
/**
* 订单Dao
* @author zhengcy
*
*/
public interface OrdersDao extends MongoBase<Orders> {
}
4)、 实现OrdersDaoImpl具体类。
/**
* 订单实现
* @author zhengcy
*
*/
@Repository("ordersDao")
public class OrdersDaoImpl implements OrdersDao {
@Resource
private MongoTemplate mongoTemplate;
@Override
public void insert(Orders object, String collectionName) {
mongoTemplate.insert(object, collectionName);
}
@Override
public void save(Orders object, String collectionName) {
mongoTemplate.save(object, collectionName);
}
@Override
public void insertAll(List<Orders> objects) {
mongoTemplate.insertAll(objects);
}
}
5)、测试代码就不粘贴出来了,大家可以通过junit4,进行相关的功能测试。
三、MongDB文档数据库:删除
spring-data-mongodb的MongoTemplate提供文档删除方法,如下截图:
1)、指定特定条件的文档删除。
第一步:我们在基础接口MongoBase.java类新增一个根据条件删除文档的接口 。
/**
* 根据条件 删除
*
* @param query
*/
public void remove(Query query);
第二步: 我们在OrdersDaoImpl类添加一个具体根据条件删除文档的实现方法。
public void remove(Query query) {
mongoTemplate.remove(query, this.getEntityClass());
}
2)、集合删除
第一步:我们在基础接口MongoBase.java类新增一个根据条件删除集合的接口。
//删除集合
public void dropCollection(String collectionName);
@Override
public void dropCollection(String collectionName) {
mongoTemplate.dropCollection(collectionName);
}