User-Flow, поиск, редактирование информации о себе

This commit is contained in:
RoyceDa
2026-02-05 01:22:39 +02:00
parent f74f4e7af7
commit 4a4cd81891
14 changed files with 415 additions and 13 deletions

View File

@@ -5,6 +5,7 @@ import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
/**
* Базовый репозиторий для работы с сущностями базы данных
@@ -92,11 +93,27 @@ public abstract class Repository<T> {
return executeInSession(session -> {
String queryString = "FROM " + entityClass.getSimpleName() + " WHERE " + fieldName + " LIKE :value";
return session.createQuery(queryString, entityClass)
.setParameter("value", "%" + value + "%")
.setParameter("value", value + "%")
.list();
});
}
/**
* Поиск сущности по значению одного поля с использованием оператора LIKE и ограничения LIMIT
* @param fieldName поле
* @param value значение
* @return найденная сущность или null
*/
public List<T> likeSearchAll(String fieldName, String value, int take) {
return executeInSession(session -> {
String queryString = "FROM " + entityClass.getSimpleName() + " WHERE " + fieldName + " LIKE :value";
return session.createQuery(queryString, entityClass)
.setParameter("value", value + "%")
.setMaxResults(take)
.list();
});
}
/**
* Поиск сущности по набору полей
* @param fields карта полей и их значений
@@ -212,6 +229,26 @@ public abstract class Repository<T> {
});
}
/**
* Выполняет запрос с параметрами и возвращает список сущностей
* @param queryString SQL запрос
* @param parameters параметры запроса
* @return список сущностей
*/
public QuerySession<T> buildQuery(String queryString, HashMap<String, Object> parameters) {
Session session = HibernateUtil.openSession();
try {
Query<T> query = session.createQuery(queryString, entityClass);
for (var entry : parameters.entrySet()) {
query.setParameter(entry.getKey(), entry.getValue());
}
return new QuerySession<>(session, query);
} catch (Exception e) {
session.close();
throw e;
}
}
/**
* Подсчет сущностей по набору полей
* @param fields карта полей и их значений