一、 描述
springboot 2.x以后,根据id查询一条数据,就不能再使用findone方法了,变成了findbyid:本人总结了几种方法如下:
1.使用respository仓库类:
/**
* 通过id的查询
* @param id
* @return
*/
//根据id查询一条数据(2.0后不能使用findOne了),https://blog.youkuaiyun.com/u012211603/article/details/79828277
public OrderDetailEntity findStudentById(String id) {
Long ids=Long.parseLong(id);
//1.第1种
Optional<OrderDetailEntity> fooOptional= ordersSearchRepository.findById(ids);
OrderDetailEntity foo=null;
if (fooOptional.isPresent()){
foo = fooOptional.get();
}
else{
System.out.println("数据为empty");
}
return foo;
//2.第2种
//OrderDetailEntity fooOptional2= ordersSearchRepository.findById(ids).get();
//return fooOptional2;
//3.第3种
// return ordersSearchRepository.findOrderDetailEntityById(ids);
}
2.使用elasticsearchTemplate:OrderDetailEntity为实体类
/**
* 通过id查询
* @param id
* @return
*/
public OrderDetailEntity queryOrderDetailEntityById(String id){
GetQuery getQuery = new GetQuery();
getQuery.setId(id);
OrderDetailEntity indexedEntity = elasticsearchTemplate.queryForObject(getQuery,OrderDetailEntity.class);
return indexedEntity ;
}
3.注意:
当es的主键_id与数据自定义的主键id不一致时,入数据时候没有设置一致,需要以es的_id为准