Spring Data MongoDB总结

首先公司项目用的技术是:
SpringCloud+Spring Data MongoDB

Spring-Data-MongoDB的结构位置:
hibernate是传统数据库的ORM框架(Object Relational Mapping对象关系映射,简称,ORM)
mongoDB是nosql的非关系型数据库
mongoDB的ORM框架,有mongoDB官方提供Morphia框架或者spring-data-mongoDB框架

在java程序中使用mongoDB语法首先要引入jar包
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

1.查询:
使用Query类和Criteria类表达查询:

Criteria类:完全面向对象编程查询方式
Criteria 是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现、SQL语句如何编写,是Hibernate框架的核心查询对象。
Hibernate 定义了CriteriaSpecification接口规范用来完成面向对象的条件查询,Criteria 就是CriteriaSpecification的子接口。

Query类:Query是一个查询参数类,封装了查询条件,分页,排序等功能。
实现不规则分页:Query query = new Query().limit(3,5);
时间排序:Query query = new Query().orderby(“create_time”,Sort.DESC);

//首先注入mongoTemplate对象

@Autowired
private MongoTemplate mongoTemplate;

//首先新建查询

Query query = new Query();

//可以在()中写查询条件:

Query query = new Query(Criteria.where("delFlag").is("0"));

//可以在()外写:

Query query = new Query();
query.addCriteria(Criteria.where("sap_no").is(no));

//或

Query query = new Query();
Criteria criteria = Criteria.where("exp_no").is(expNo);
query.addCriteria(criteria);

//模糊查询

 if (!StringUtils.isEmpty(tshareAdvertisement.getAdSupplier())) {
            String regex = "^.*"+tshareAdvertisement.getAdSupplier()+".*$";
            Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
            query.addCriteria(Criteria.where("adSupplier").regex(pattern));
        }

//查找所有

mongoTemplate.findAll(Object.class);

//返回:

return mongoTemplate.find(query, Sample.class);

2.更新
//首先查询出要更新的id

Query query=new Query(Criteria.where("_id").is(id));

//分开写:

Update update = Update.update("要更新的字段", "更新的值");

mongoTemplate.updateFirst(query, update, Object.class);

//可以直接.set

Update update = new Update().set("name",name).set("nationCode",nationCode).set("nationName",nationName).set("location",locationList);

//返回

return mongoTemplate.findAndModify(query, update, Airport.class);

3.删除
其实就是查询+更新

Query query = new Query(Criteria.where("id").is(tshareAdvertisement.getId()));
Update update = new Update().set("delFlag", "1").set("updateTime", new Date());
return mongoTemplate.findAndModify(query, update, TshareAdvertisement.class);

你可能感兴趣的:(Spring Data MongoDB总结)