spring_boot+mongodb的两种方式

一、概述

 * mongoRepository :1、没有updata方法  2、自定义查询方法 需要按一定的规则 网上可查
 * mongoTemplate : 几乎可以做所有操作就是有时很麻烦 具体操作可以查
说明:

MongoRepository 和 MongoTemplate 是可以直接导包使用的 大多数时候是继承他们实先更多的功能。

例如:

@Repository
public interface HospitalRepository extends MongoRepository<Hospital,String> {

//根据查询数据
Hospital getHospitalByHoscode(String hoscode);

}


  @Autowired(required=false)
    private HospitalRepository hospitalRepository;//操作mogodb数据库的第一种方法  这里使用的是扩展了的
    private MongoRepository mongoRepository;//操作mogodb数据库的第一种方法  没有扩展

    @Autowired
    private MongoTemplate mongoTemplate;  //操作mogodb数据库的第二种方法  这里没有扩展该类 最原始的方法

**

二、以添加和修改数据为例

**

//上传医院接口
    @Override
    public void save(Map<String, Object> requestMap) {
        //1、通过json转换工具将集合转换成字符串 再将字符串条件到对应的实体类对象
        String mpString = JSONObject.toJSONString(requestMap);
        Hospital hospital = JSONObject.parseObject(mpString, Hospital.class);

        //根据code查看数据库是否有该数据
        Hospital hospitalExist = hospitalRepository.getHospitalByHoscode(hospital.getHoscode());

        //如果不为空  修改
        if (hospitalExist != null){
            hospital.setStatus(hospitalExist.getStatus());
            hospital.setCreateTime(hospitalExist.getCreateTime());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            mongoTemplate.update(hospital.getClass());
        }else { //为空 添加
            hospital.setStatus(0);
            hospital.setCreateTime(new Date());
            hospital.setUpdateTime(new Date());
            hospital.setIsDeleted(0);
            hospitalRepository.save(hospital);
        }
       
      //根据hoscode 查询mongodb 数据库
    @Override
    public Hospital getByHoscode(String hoscode) {
        return hospitalRepository.getHospitalByHoscode(hoscode);
    }

其中 mongoTemplate.update(hospital.getClass());为更新
hospitalRepository.save(hospital);为添加
注意:hospitalRepository.save();实际上的原理是如果有数据就执行更新操作,没有就执行添加操作,但是mongodb容易出现索引重复更新失败


版权声明:本文为qq_44798321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。