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);
}
持续发布……