spring-mvc - 知道如何实现只带来您搜索过的值的视图吗?
问题描述
我正在整理一个搜索页面,该页面使用具有超过 1000,000 个注册表的数据库。知道如何实现一个只带来你搜索过的值的视图吗?我已经能够使用较小的数据库(300)来做到这一点,但是,它会在搜索之前加载视图中的所有注册表。如果搜索字段为空,我需要它不返回任何内容。
(Spring MVC、JPA、Hibernate 和 Thymeleaf)。
@PersistenceContext
private EntityManager manager;
@SuppressWarnings("unchecked")
@Override
@Transactional(readOnly = true)
public Page<Alarme> filtrar(Alarme filtro, Pageable pageable) {
int paginaatual = pageable.getPageNumber();
int totalRegistrosPorPagina = pageable.getPageSize();
int primeiroRegistro = paginaatual * totalRegistrosPorPagina;
Criteria criteria = manager.unwrap(Session.class).createCriteria(Alarme.class);
criteria.setFirstResult(primeiroRegistro);
criteria.setMaxResults(totalRegistrosPorPagina);
Sort sort = pageable.getSort();
System.out.println(">>> sort: " + sort);
if (sort != null) {
Sort.Order order = sort.iterator().next();
String property = order.getProperty();
criteria.addOrder(order.isAscending() ? Order.asc(property) : Order.desc(property));
}
adicionarFiltro(filtro, criteria);
return new PageImpl<>(criteria.list(), pageable, total(filtro));
}
private Long total(Alarme filtro) {
Criteria criteria = manager.unwrap(Session.class).createCriteria(Alarme.class);
adicionarFiltro(filtro, criteria);
criteria.setProjection(Projections.rowCount());
return (Long) criteria.uniqueResult();
}
private void adicionarFiltro(Alarme filtro, Criteria criteria) {
if(filtro != null){
if(!StringUtils.isEmpty(filtro.getIncidente())){
criteria.add(Restrictions.ilike("incidente", filtro.getIncidente(), MatchMode.ANYWHERE));
}
}
if(filtro != null){
if(!StringUtils.isEmpty(filtro.getSite())){
criteria.add(Restrictions.ilike("site", filtro.getSite(), MatchMode.ANYWHERE));
}
}
}
}```
解决方案
数据量大的时候,前面的数据很难全部加载。 搜索栏失去焦点的情况下,能否进行后端查询?
推荐阅读
- python - groupby() cumsum() 4 列
- javascript - 无法分配给 React useRef 中的只读属性“当前”
- javascript - 如何将值从一个函数发送到另一个函数
- powershell - 从 TXT 或 CSV 获取主机名,存储在变量中
- java - 在 AWS S3 上上传时图像和 PDF 文件损坏
- dependency-injection - Dagger/Hilt 如果模块是抽象类或接口,它们有区别吗?
- join - 谷歌表数组公式+加入+过滤
- ios - 为什么 .foregroundColor 属性不适用于 NSMutableAttributedString?
- ruby-on-rails - 如何验证rails中的时间戳?
- php - 比较关联数组中foreach循环内的下一个元素