Commit f426f4ad by Patryk Czarnik

Wyszukiwarka w oparciu o EntityManager

parent 9504c4be
package sklep.alternatywne_dostepy_do_bazy; package sklep.alternatywne_dostepy_do_bazy;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
...@@ -35,4 +36,13 @@ public class ProductController_v3 { ...@@ -35,4 +36,13 @@ public class ProductController_v3 {
return "missing_product"; return "missing_product";
} }
} }
@GetMapping("/szukaj")
public String szukaj(String name, Model model) {
TypedQuery<Product> query = em.createQuery("SELECT p FROM Product p WHERE productName = :nazwa", Product.class);
query.setParameter("nazwa", name);
List<Product> products = query.getResultList();
model.addAttribute("products", products);
return "wyszukiwarka";
}
} }
package sklep.alternatywne_dostepy_do_bazy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import sklep.model.Product;
import sklep.repository.ProductRepository;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
@Controller
@RequestMapping("/alt7/products")
public class ProductController_v7 {
@Autowired
private ProductRepository productRepository;
@GetMapping
public String readAll(Model model) {
List<Product> products = productRepository.findAll();
model.addAttribute("products", products);
return "products";
}
@GetMapping("/{id}")
public String readOne(@PathVariable("id") Integer productId, Model model) {
Optional<Product> product = productRepository.findById(productId);
if(product.isPresent()) {
model.addAttribute("product", product.get());
return "product";
} else {
return "missing_product";
}
}
@GetMapping("/szukaj")
public String szukaj(Model model,
String name,
BigDecimal min,
BigDecimal max) {
List<Product> products = List.of();
if(name != null && !name.isEmpty() && min == null && max == null) {
products = productRepository.findByProductNameContainingIgnoreCase(name);
} else if ((name == null || name.isEmpty()) && (min != null || max != null)) {
if(min == null) {
min = BigDecimal.ZERO;
}
if(max == null) {
max = BigDecimal.valueOf(1000_000_000);
}
products = productRepository.findByPriceBetween(min, max);
} else if (name != null && !name.isEmpty() && (min != null || max != null)) {
if(min == null) {
min = BigDecimal.ZERO;
}
if(max == null) {
max = BigDecimal.valueOf(1000_000_000);
}
products = productRepository.findByProductNameContainingIgnoringCaseAndPriceBetween(name, min, max);
}
model.addAttribute("products", products);
return "wyszukiwarka2";
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment