一、概述
* 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版权协议,转载请附上原文出处链接和本声明。