package com.objecteye.dao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.geo.GeoJson; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.stereotype.Component; import java.util.List; @Component public class MongoTemplates { @Autowired private MongoTemplate mongoTemplate; public void save(Polygon polygon){ mongoTemplate.save(polygon); } public void saveRegions(List gisRegionList){ mongoTemplate.insert(gisRegionList,GisRegion.class); } public T findById(Class entityClass, String id) { return mongoTemplate.findById(id, entityClass); } public List findAll(Class entityClass) { return mongoTemplate.findAll(entityClass); } public void remove(T entity) { mongoTemplate.remove(entity); } public void add(T entity) { mongoTemplate.insert(entity); } public void addAll(List entity) { mongoTemplate.insertAll(entity); } public void saveOrUpdate(T entity) { mongoTemplate.save(entity); } public T findOne(Class entityClass) { return mongoTemplate.findOne(new Query(), entityClass); } public List findIntersective(GeoJson geoJson){ Query query=new Query(Criteria.where("geometry").intersects(geoJson)); List list=mongoTemplate.find(query,Polygon.class); return list; } public boolean isExistIntersective(GeoJson geoJson){ Query query=new Query(Criteria.where("geometry").intersects(geoJson).and("_id").is(100000)); boolean res=mongoTemplate.exists(query,GisRegion.class); return res; } /*public T findBy(Class entityClass, String id) { Criteria cri = new Criteria(); // 设置条件(注意:设置查询的值类型必须和mongodb中类型一致) cri.and("status").is("0"); // 类型为String,类似sql中 status = '0' cri.and("boolRelation").is(0D); // 类型为Double,类似sql中 boolRelation = 0 cri.and("enforType").regex("01.*"); // 正则表达匹配,类似右模糊查询,sql中 like '01%' // lt gt lte gte return null; }*/ //mongodb查询根据指定条件对象 /* public T findQuery(Class entityClass, BasicDBObject basicDBObject) { // 分、 排序、按时间查询 Query query = new Query(); //必须条件 // Criteria c = Criteria.where("VINID").is(Map.get(vin)); Criteria c = new Criteria(); //范围条件 if (!StringUtils.isEmpty(start) && StringUtils.isEmpty(end)) { c.and("TIME1").gte(GetTime1(start)); } else if (StringUtils.isEmpty(start) && !StringUtils.isEmpty(end)) { c.and("TIME1").lte(GetTime1(end)); } else if (!StringUtils.isEmpty(start) && !StringUtils.isEmpty(end)) { //对同一个属性加两次限制需这样操作 c.andOperator( c.where("TIME1").gte(GetTime1(start)), c.where("TIME1").lte(GetTime1(end)) ); } query.addCriteria(c); //总数 int num = (int) mongoTemplate.count(query, CarDataEx.class, "jmevTest"); System.out.println("总数:" + num); //分页 query.skip((page - 1) * rows).limit(rows); //排序 query.with(new Sort(Sort.Direction.DESC, "TIME1","TIME2")); //query.with(new Sort(properties)); List jmevTest = (List) mongoTemplate.find(query, CarDataEx.class, "jmevTest"); }*/ }