更新部分字段的工具类
package cn.xxxxx.util;
import ...;
public class DBHelper {
/**
* 更新
* @param template
* @param query 条件
* @param source 数据
* @param fields 更新字段
*/
public static void update(MongoTemplate template, Query query, Object source, String... fields){
Update update = new Update();
Class<?> clz = source.getClass();
for (String field : fields) {
try {
//name getName
Method method = clz.getMethod("get" + field.substring(0, 1).toUpperCase()
+ field.substring(1));
Object o = method.invoke(source); //soucre.getName();
update.set(field, o); //name soucre.getName()
} catch (Exception e) {
e.printStackTrace();
}
}
template.updateMulti(query,update, clz);
}
}
实现代码举例
@Autowired
private MongoTemplate template;
@Override
public void updateStateById(String id, int state) {
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(id));
Department department = new Department();
department.setState(state);
DBHelper.update(template,query,department,"state");
}
第二种方式,不适用工具类的方式
//第一种方式
@Autowired
private RegionRepository regionRepository;
@Override
public void updateStateById(String id, int state) {
Department department = this.get(id);
//修改部分属性
department.setState(state);
//保存
departmentRepository.save(department);
}