#java #mysql #spring #spring-data-jpa
#java #mysql #весна #spring-data-jpa
Вопрос:
Мне нужно выполнить этот запрос, используя spring data jpa
select substring_index(date_time,' ',1) as date, number,msg,type
from sms where substring_index(date_time,' ',1)
between ("parameter1") and ("parameter2") and type=("parameter3")";
Метод Java, который я определил, приведен ниже: приведенный выше запрос должен принимать три параметра, приведенные ниже, для извлечения требуемых данных
public List<Sms> findByDateContainingAndNumberAndMsgAndType(
String startDate, String endDate,String type);
Как я могу это сделать, используя spring data jpa?
Ответ №1:
Здесь вам требуется, чтобы в соответствии с запросом возвращалось более 2 полей, поэтому вам нужно использовать объект для сбора всех значений.
Скорее всего, запрос может возвращать несколько строк, поэтому для сбора их всех нам нужно использовать List
.
Поэтому включите что-то подобное в свой контроллер
@PostMapping("/endpoint")
public String search(Model model) {
List<fill_sms_entity_class_name_here> list = sms_service.retrieve(parameter1,2,3);
model.addAttribute("list", list);
return "index";
}
Теперь внутри вашего репозитория включите следующий код
@Query(value="select substring_index(date_time,' ',1) as date, number,msg,type from sms where substring_index(date_time,' ',1) between ?1 and ?2 and type=?3", nativeQuery = true)
List<classname> retrieve(parameter1,2,3);