首先公司项目用的技术是:
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);