(java) springboot操作mongodb的方式

java操作mongodb 的方式有两种

              1.继承 MongoRepository 这种方式比较简单。MongoRepository内部继承了部分curd操作。如果内部方法能满足需求的话,就是要继承它就可以。如果不可以的话,可以在接口中写自己的方法。MongoRepository内部的方法有:

                 public abstract <S extends T> List<S> save(Iterable<S> paramIterable);
  
                 public abstract List<T> findAll();
  
                public abstract List<T> findAll(Sort paramSort);
  
                public abstract <S extends T> S insert(S paramS);
  
               public abstract <S extends T> List<S> insert(Iterable<S> paramIterable);
  
               public abstract <S extends T> List<S> findAll(Example<S> paramExample); 

            2 使用MongoTemplate 操作Mongodb


1MongoTemplate 的保存方法,insert 和save 方法

   先介绍一下insert和save的区别:

     首先:insert你可以理解成跟mysql一样的insert,如果id重复了就会报错org.springframework.dao.DuplicateKeyException,主键重复。但是save方法你可以理解成insert+update,如果没有这条数据就直接插入,如果已经有了这条数据,就会更新这条数据。

                其次:在批量插入的时候,insert 可以一次性插入整个列表,不需要遍历,save批量插入需要便利后才可逐个插入 。  

                            insert方法:

                                         public void insert(Object objectToSave)
                   
                                         public void insert(Object objectToSave, String collectionName)

                           save方法:

                                          public void insert(Object objectToSave)
                   
                                         public void insert(Object objectToSave, String collectionName) 

                          如果在application.properties中配置的数据库为customer(原来数据库中没有这个库)

                         



   使用下面两个方法时   public void insert(Object objectToSave, String collectionName)

      public void save(Object objectToSave, String collectionName),保存的对象就会被保存到你指定的表名中。


查询count 返回的满足查询条件的数量   先不写query部分

/***************************count********************************************/
	@Test
	public void testCount(){
		Query query = new Query();
	
		System.out.println(template.count(query, Customer.class));
	}
	
	
	@Test
	public void testCountIncollection(){
		Query query = new Query();
		long count = template.count(query, "test");
		System.out.println(count);
	
	}
	@Test
	public void testCount3(){
		Query query = new Query();
		long count = template.count(query, Customer.class, "customer");
		System.out.println(count);
	}
	


     

/*******************************finall两个方法*************************************/
	@Test
	public void findAll(){
		List<Customer> list = template.findAll(Customer.class);
	    
		System.out.println("*****************************");
		System.out.println(list);
		System.out.println("*****************************");
	}
	@Test 
	public void findAllfromCollection(){
		List<Customer> list = template.findAll(Customer.class, "test");
		System.out.println("*****************************");
		System.out.println(list);
		System.out.println("*****************************");
	}

 
/*******************************三个find()方法***************************************/
	@Test
	public void find1(){
		Query query = new Query();
		List<Customer> list = template.find(query, Customer.class);
		System.out.println(list);
	}
	
	//如果要查的表中有
	@Test
	public void find2(){
		Query query = new Query();
		List<Customer> list = template.find(query, Customer.class,"test");
		System.out.println(list);
	}

@Test
	public void find3(){
		Query query = new Query();
		//同名查询条件不能使用orOperator
		
		//Criteria criteria =Criteria.where("firstName").is("mike").orOperator(Criteria.where("lastName").is("smith"));
		//Criteria criteria =Criteria.where("firstName").is("mike").and("lastName").is("smith");
		 //Criteria criteria =Criteria.where("firstName").is("mike").andOperator(Criteria.where("lastName").is("smith"));
		
		//Criteria criteria = Criteria.byExample(example)
		query.addCriteria(criteria);
		List<Customer> list = template.find(query, Customer.class,"customer");
		System.out.println(list);
	}
	




/**************************两个findById********************************/
	/*
	 * 参数 对象id/类
	 */
	@Test
	public void findById(){
		Customer customer = template.findById("5a7a90a015751f4834bf7dd6", Customer.class);
	    System.out.println(customer);
	}
	/*
	 * 参数 对象id/对象类名/表名
	 */
	@Test
	public void findById2(){
		Customer customer = template.findById("5a7a90a015751f4834bf7dd6", Customer.class, "customer");
	    System.out.println(customer);
	    System.out.println(customer.toString());
	}
/*************************两个findOne()**********************************/
	/*
	 * 查出第一个符合条件的信息
	 */
	@Test
	public void findOne(){
		Query query = new Query();
		Customer customer = template.findOne(query,Customer.class);
	    System.out.println(customer);
	}
	/*
	 * 查出第一个符合条件的信息
	 */
	@Test
	public void findOne2(){
		Query query = new Query();
		Customer customer = template.findOne(query, Customer.class, "customer");
	    System.out.println(customer);
	}
/*
	 * 获取当前数据库信息
	 */
	@Test
	public void getDb(){
		DB db = template.getDb();
		DBCollection collection = template.getCollection("customer");
		String collectionName = template.getCollectionName(Customer.class);
		System.out.println(db);
		System.out.println(collection);
		System.out.println(collectionName);
	}
	





持续发布……

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值