Java Spring Boot JPA@Query问题如何修复
我需要一些帮助。我正在使用JPA编写web应用程序。我通过YouTube和其他网页上的教程来实现这一点。 我赚了很多,但我需要帮助从我的申请中看到一件事。 我有客户,也有预约日期,因为这是一份美容院的申请 这就是我在InteliJ中的应用 我想显示名为“Patryk”的客户机 下面是model.klienci中的代码Java Spring Boot JPA@Query问题如何修复,java,spring,spring-boot,hibernate,jpa,Java,Spring,Spring Boot,Hibernate,Jpa,我需要一些帮助。我正在使用JPA编写web应用程序。我通过YouTube和其他网页上的教程来实现这一点。 我赚了很多,但我需要帮助从我的申请中看到一件事。 我有客户,也有预约日期,因为这是一份美容院的申请 这就是我在InteliJ中的应用 我想显示名为“Patryk”的客户机 下面是model.klienci中的代码 package figura.zaklad_fryzjerski_v3.model; import javax.persistence.*; @Entity @Table(n
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.kliencirespository中的代码
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> {
}
包figura.zaklad_fryzjerski_v3.repository;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入org.springframework.data.jpa.repository.JpaRepository;
导入org.springframework.stereotype.Repository;
@存储库
公共接口klienciredepository扩展了JpaRepository{
}
下面是service.klienceservice的代码
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);
}
包figura.zaklad_fryzjerski_v3.service.klienci;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入org.springframework.data.domain.Page;
导入org.springframework.data.domain.Sort;
导入org.springframework.data.jpa.repository.Query;
导入java.util.List;
公共接口设备{
列出getAllKlieci();
void saveKlienci(Klienci Klienci);
Klienci getKlienciById(整数id_klienta);
void usunKlientaById(整数id_klienta);
已分页(int pageNo、int pageSize);
}
下面是service.klienceserviceimpl中的代码
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);
}
}
包figura.zaklad_fryzjerski_v3.service.klienci;
导入figura.zaklad_fryzjerski_v3.model.Klienci;
导入figura.zaklad_fryzjerski_v3.repository.kliencirespository;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.data.domain.Page;
导入org.springframework.data.domain.PageRequest;
导入org.springframework.data.domain.Pageable;
导入org.springframework.stereotype.Service;
导入java.util.List;
导入java.util.Optional;
@服务
//@交易的
公共类KlienceIServiceImpl实现KlienceIService{
@自动连线
私人KlienciRepository KlienciRepository;
@凌驾
公共列表getAllKlieci(){
return klienciresposition.findAll();
}
@凌驾
公共无效保存(Klienci Klienci){
这个.klienciresposition.save(klienci);
}
@凌驾
public Klienci getKlienciById(整数id_klienta){
可选=klienciRepository.findById(id_klienta);
Klienci-Klienci=null;
if(可选的.isPresent()){
klienci=optional.get();
}否则{
抛出新的运行时异常(“Klient nie znaleziony po id::”+idu klienta);
}
返回克利恩西;
}
@凌驾
public void usunKlientaById(整数id_klienta){
this.klienciresposition.deleteById(id_klienta);
}
@凌驾
已查找到的公共页面(int pageNo,int pageSize){
Pageable Pageable=PageRequest.of(pageNo-1,pageSize);
返回此.klienciRepository.findAll(可分页);
}
}
在这里我还包括了一个控制器,我用它来显示我应用程序页面上的内容
//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";
}
//klient wyświetlanie listy klientów
@自动连线
公共场所;公共场所;
@GetMapping(“/klient_baza”)
公共字符串getKlient_baza(模型){
addAttribute(“listaklinetow”,klienceservice.getAllKlieci());
返回FindPagined(1,型号);
}
//多达瓦尼·克莱蒂诺·巴齐·达尼奇
@GetMapping(“/klient_dodaj”)
公共字符串getKlient_dodaj(模型){
Klienci Klienci=新Klienci();
addAttribute(“klienci”,klienci);
返回“/klient/klient_dodaj”;
}
//扎皮西瓦尼·克利托沃·巴齐·达尼奇
@后映射(“/klientZapisz”)
公共字符串saveKlient(@modeldattribute(“klienci”)klienci-klienci,Model-Model){
克林塞维西。萨维克林西(克林西);
模型.addAttribute(“典型”、“dodanie_rekordu”);
模型添加属性(“sukces”、“Pomyślnie dodano klienta”);
返回getKlient_baza(模型);
}
//斯特罗纳·兹埃德瓦尼姆·克利恩塔
@GetMapping(“/klient_dodaj/{id_klienta}”)
公共字符串showFormForUpdate(@PathVariable(value=“id\u klienta”)整数id\u klienta,模型){
Klienci Klienci=klienceservice.getKlienciById(id_klienta);
addAttribute(“klienci”,klienci);
model.addAttribute(“edycja”,“true”);
返回“/klient/klient_dodaj”;
}
//usuwanie klienta z bazy danych
@GetMapping(“/usun\u klienta/{id\u klienta}”)
公共字符串usunKlienta(@PathVariable(value=“id\u klienta”)整数id\u klienta,Model){
model.addAttribute(“典型”、“通常情况”);
模型添加属性(“sukces”、“Pomyślnie usunięto klienta”);
这个.klienceservice.usunKlientaById(id_klienta);
返回getKlient_baza(模型);
}
//波兹亚娜·斯特罗尼
@GetMapping(“/klient_baza/{pageNo}”)
公共字符串findPaginated(@PathVariable(value=“pageNo”)int pageNo,Model){
int pageSize=10;
Page Page=klienceservice.findPaginated(页码、页面大小);
List klienciList=page.getContent();
model.addAttribute(“aktualnaStrona”,页码);
addAttribute(“wszystkieStrony”,page.getTotalPages());
model.addAttribute(“total”,page.getTotalElements());
model.addAttribute(“listaKlientow”,klienciList);
返回“/klient/klient_baza”;
}
如何在此处添加查询方法是否使用@QUERY仅显示名称为“Patryk”的客户端?您实际上不需要使用带@QUERY注释的方法。Spring数据足够“智能”,可以基于模型属性生成查询。您只需将方法声明添加到KlienciRepository接口:
List<Klienci> listKlienciByNazwiskoKlienta(String name);
列表listkliencibiynazwiskoklienta(字符串名称);
Spring数据将研究一个名为nazwiskoKlienta和b的属性的Klienci模型
List<Klienci> listKlienciByNazwiskoKlientaContaing(String name);
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
Klienci findByImieKlienta (String imieKlienta);
}
@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
List<Klienci> findByimieKlientaIgnoreCase(String firstName);
}
@Repository
public interface KlienciRepository extends JpaRepository<Klienci, Integer> {
@Query(SELECT * from klienci k where k.imieKlienta like "?1%")
List<klienci> findbyfirstname(String firstname);
}