MongoTemplates.java.old 3.82 KB
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<GisRegion> gisRegionList){
        mongoTemplate.insert(gisRegionList,GisRegion.class);
    }

    public <T> T findById(Class<T> entityClass, String id) {
        return mongoTemplate.findById(id, entityClass);
    }

    public <T> List<T> findAll(Class<T> entityClass) {
        return mongoTemplate.findAll(entityClass);
    }

    public <T> void remove(T entity) {
        mongoTemplate.remove(entity);
    }

    public <T> void add(T entity) {
        mongoTemplate.insert(entity);
    }

    public <T> void addAll(List<T> entity) {
        mongoTemplate.insertAll(entity);
    }

    public <T> void saveOrUpdate(T entity) {
        mongoTemplate.save(entity);
    }

    public <T> T findOne(Class<T> entityClass) {
        return mongoTemplate.findOne(new Query(), entityClass);
    }

    public List<Polygon> findIntersective(GeoJson geoJson){
        Query query=new Query(Criteria.where("geometry").intersects(geoJson));
        List<Polygon> 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> T findBy(Class<T> 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> T findQuery(Class<T> 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<T> jmevTest = (List<T>) mongoTemplate.find(query, CarDataEx.class, "jmevTest");
        }*/

}