java - 如何使用 Spring Boot 在 Spring MVC 中实现高级搜索功能?
问题描述
我是 Spring Boot 的新手。我正在实现微服务架构。我有两个实体司机和汽车。驾驶员和汽车之间存在一对一的关系。一个司机只能选择一辆车,一辆车只能由一个司机选择。
我想实现高级搜索功能。应该可以通过司机的属性(用户名、在线状态)以及汽车特征(车牌号、车名等)来搜索司机。我正在使用数据库作为 H2(在内存中)。我想避免嵌套 if 和 else。
在 Spring Boot 中执行此操作的最佳方法是什么?
解决方案
我认为最好的方法是在你的代码中启用休眠搜索模块。为此,您可以使用索引和字段注释。
下面的例子
@Entity
@Indexed
public class Car {
@Column(name = "name")
@Field
private String name;
@Column(name = "license_number")
@Field
private Integer licenseNumber;
}
之后,您可以在服务层中使用搜索功能
@Service
public class CarServiceImpl implements CarService {
@PersistenceContext
private EntityManager entityManager;
@Override
@Transactional
public List<Car> search(Sting name, String licenseNumber) {
FullTextSearchBuilder builder = new FullTextSearchBuilder(entityManager, Car.class);
builder.appendAndQuery(name, "name");
builder.appendAndQuery(licenseNumber, "licenseNumber");
FullTextQuery fullTextQuery = builder.createFullTextQuery();
return (List<Car>) fullTextQuery.getResultList();
}
}
推荐阅读
- javascript - 间隔上的javascript转换不起作用
- html - CSS从第n个孩子中排除辅助表
- angular - angular/fire通过自定义字段实时数据库firebase获取json
- python - Python远程进程诊断工具
- python - 如何在已连接的 Python asyncio 流上启用 TLS?
- c - 将未初始化的指针的任意地址打印到指针
- python - 这是用 Python 编写 OR 的正确方法吗
- laravel - Laravel 5.8 注销、返回、单击按钮和错误
- android - 用导航组件导航替换片段后,片段内的 ViewPager2 泄漏
- dataweave - Mulesoft Dataweave 表达式引发错误