Spring Data 与MongoDB 集成二:操作篇(添加和删除)

一、简介

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;
	}
}


3)、 实现OrdersDao类,就是实现Orders自己操作文档数据库(mongodb) 的接口,这个OrdersDao继承MongoBase接口.

/**
 * 订单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());  
    } 


第三步:测试代码就不粘贴出来了,有兴趣可以通过junit4进行相关测试。

2)、集合删除
第一步:我们在基础接口MongoBase.java类新增一个根据条件删除集合的接口。       
         //删除集合
            public void dropCollection(String collectionName);

第二步:我们在OrdersDaoImpl类添加一个具体根据条件删除集合的实现方法。
         @Override
	public void dropCollection(String collectionName) {
		mongoTemplate.dropCollection(collectionName);
	}

第三步:测试代码就不粘贴出来了,有兴趣可以通过junit4进行相关测试。









  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值