java - Spring Boot JPA @Query 问题如何解决
问题描述
我需要一些帮助。我正在使用 JPA 编写 Web 应用程序。我通过 YouTube 和其他页面上的教程来制作它。我做了很多,但我需要帮助才能从我的应用程序中查看一件事。我有客户和约会日期,因为这是美发沙龙的申请。
这就是我在 InteliJ https://i.stack.imgur.com/HlDXK.png中的应用程序的外观 我想显示名字例如“Patryk”的客户端
这是来自 model.klienci 的代码
package figura.zaklad_fryzjerski_v3.model;
import javax.persistence.*;
@Entity
@Table(name = "klienci")
public class Klienci {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_klienta")
private Integer id_klienta;
@Column(name = "imie")
private String imieKlienta;
@Column(name = "nazwisko")
private String nazwiskoKlienta;
@Column(name = "nr_telefonu_klienta")
private Integer nrTelefonuKlienta;
@Column(name = "adres_email")
private String adresEmailKlienta;
getters and setters
这是来自 repository.KlienciRepository 的代码
package figura.zaklad_fryzjerski_v3.repository;
import figura.zaklad_fryzjerski_v3.model.Klienci;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
}
这是来自 service.KlienciService 的代码
package figura.zaklad_fryzjerski_v3.service.klienci;
import figura.zaklad_fryzjerski_v3.model.Klienci;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface KlienciService {
List<Klienci> getAllKlieci();
void saveKlienci(Klienci klienci);
Klienci getKlienciById(Integer id_klienta);
void usunKlientaById(Integer id_klienta);
Page<Klienci> findPaginated(int pageNo, int pageSize);
}
这是来自 service.KlienciServiceImpl 的代码
package figura.zaklad_fryzjerski_v3.service.klienci;
import figura.zaklad_fryzjerski_v3.model.Klienci;
import figura.zaklad_fryzjerski_v3.repository.KlienciRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
//@Transactional
public class KlienciServiceImpl implements KlienciService{
@Autowired
private KlienciRepository klienciRepository;
@Override
public List<Klienci> getAllKlieci() {
return klienciRepository.findAll();
}
@Override
public void saveKlienci(Klienci klienci){
this.klienciRepository.save(klienci);
}
@Override
public Klienci getKlienciById(Integer id_klienta) {
Optional<Klienci> optional = klienciRepository.findById(id_klienta);
Klienci klienci = null;
if(optional.isPresent()){
klienci = optional.get();
}else{
throw new RuntimeException("Klient nie znaleziony po id :: "+ id_klienta);
}
return klienci;
}
@Override
public void usunKlientaById(Integer id_klienta){
this.klienciRepository.deleteById(id_klienta);
}
@Override
public Page<Klienci> findPaginated(int pageNo, int pageSize) {
Pageable pageable = PageRequest.of(pageNo - 1,pageSize);
return this.klienciRepository.findAll(pageable);
}
}
我还在这里包括你的控制器,我用来在我的应用程序的页面上显示东西
//klient wyświetlanie listy klientów
@Autowired
public KlienciService klienciService;
@GetMapping("/klient_baza")
public String getKlient_baza(Model model){
model.addAttribute("listaKlientow",klienciService.getAllKlieci());
return findPaginated(1, model);
}
//Dodawanie klientów do bazy danych
@GetMapping("/klient_dodaj")
public String getKlient_dodaj(Model model){
Klienci klienci = new Klienci();
model.addAttribute("klienci",klienci);
return "/klient/klient_dodaj";
}
//zapisywanie klientów do bazy danych
@PostMapping("/klientZapisz")
public String saveKlient(@ModelAttribute("klienci") Klienci klienci, Model model){
klienciService.saveKlienci(klienci);
model.addAttribute("typ", "dodanie_rekordu");
model.addAttribute("sukces", "Pomyślnie dodano klienta");
return getKlient_baza(model);
}
//strona z edytowaniem klienta
@GetMapping("/klient_dodaj/{id_klienta}")
public String showFormForUpdate(@PathVariable(value = "id_klienta") Integer id_klienta, Model model) {
Klienci klienci = klienciService.getKlienciById(id_klienta);
model.addAttribute("klienci", klienci);
model.addAttribute("edycja", "true");
return "/klient/klient_dodaj";
}
//usuwanie klienta z bazy danych
@GetMapping("/usun_klienta/{id_klienta}")
public String usunKlienta(@PathVariable(value = "id_klienta")Integer id_klienta, Model model){
model.addAttribute("typ","usuniecie_rekordu");
model.addAttribute("sukces","Pomyślnie usunięto klienta");
this.klienciService.usunKlientaById(id_klienta);
return getKlient_baza(model);
}
//podział na strony
@GetMapping("/klient_baza/{pageNo}")
public String findPaginated(@PathVariable(value = "pageNo")int pageNo, Model model){
int pageSize = 10;
Page<Klienci> page = klienciService.findPaginated(pageNo,pageSize);
List<Klienci> klienciList = page.getContent();
model.addAttribute("aktualnaStrona", pageNo);
model.addAttribute("wszystkieStrony", page.getTotalPages());
model.addAttribute("total", page.getTotalElements());
model.addAttribute("listaKlientow", klienciList);
return "/klient/klient_baza";
}
如何在此处添加QUERY METHOD仅使用 @Query 显示名称为“Patryk”的客户端?
解决方案
您真的不需要使用带有@Query 注释的方法。Spring Data 足够“智能”,可以根据模型属性生成查询。你可以在你的 KlienciRepository 接口中添加一个方法声明:
List<Klienci> listKlienciByNazwiskoKlienta(String name);
Spring data 将在 Klienci 模型中查找名为 nazwiskoKlienta 的属性,并构建一个查询,使用传入的值进行相等性检查。如果您想做通配符查询,Spring data 也可以自动处理:
List<Klienci> listKlienciByNazwiskoKlientaContaing(String name);
推荐阅读
- angular - Angular Typescript 库错误
- java - 根据一个字母过滤字符串?
- python - 不能使用已经定义的函数
- javascript - react-table 按实际对象数据字段预选的行
- python - 带有百分位数的 ROC 曲线
- javascript - 测试库和 fireEvent 的问题
- javascript - 当我从 Vuejs 路径更改时,我的 Jquery 滑块被隐藏
- powershell - 在一个命令行步骤中使用 Canopy 进行测试
- c++ - 自动修改 C++ 使用的 C 库
- javascript - 为什么我的函数在单击 onclick 之前触发?