Spring mvc 你知道如何实现只带来价值的视图吗你找过了?
我正在整理一个搜索页面,它使用的数据库有超过1000000个注册表。你知道如何实现只带来价值的视图吗你找过了?我已经能够用较小的DB300实现这一点,但是,它在搜索之前加载视图中的所有注册表。如果搜索字段为空,我需要它不返回任何内容 春季MVC、JPA、Hibernate和ThymeleafSpring mvc 你知道如何实现只带来价值的视图吗你找过了?,spring-mvc,spring-data-jpa,thymeleaf,Spring Mvc,Spring Data Jpa,Thymeleaf,我正在整理一个搜索页面,它使用的数据库有超过1000000个注册表。你知道如何实现只带来价值的视图吗你找过了?我已经能够用较小的DB300实现这一点,但是,它在搜索之前加载视图中的所有注册表。如果搜索字段为空,我需要它不返回任何内容 春季MVC、JPA、Hibernate和Thymeleaf @PersistenceContext private EntityManager manager; @SuppressWarnings("unchecked") @
@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));
}
}
}
}```
当数据很大时,很难加载前面的所有数据。当搜索字段失去焦点时,您可以执行后端查询吗?否。这是我需要做的。你能给我举个例子吗?