From 849b257e4c0111a6719e379ecc1541a83cab2818 Mon Sep 17 00:00:00 2001 From: Izzdin Ahmad <izzdin.b.ahmad@stud.h-da.de> Date: Thu, 18 Jan 2024 15:39:49 +0100 Subject: [PATCH] aktualisiert --- README.md | 38 ++++++++++++++++++- pom.xml | 4 ++ src/main/java/com/example/demo1/City.java | 3 +- .../com/example/demo1/CityRepository.java | 3 +- .../com/example/demo1/Demo1Application.java | 21 ++++++---- 5 files changed, 57 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f163568..cb961c5 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Spring Web ist ein Teil des Spring Frameworks, der sich auf die Entwicklung von 2. JPA - Java Persistence API - Standard um Kommunikation mit Datenbanken zu vereinfachen (Object Relational Mapper(ORM)) -- SAL Abfragen weden mit Java generiert +- SQL Abfragen weden mit Java generiert 3. Hibernate - Implementierung des JPA Standards @@ -111,7 +111,41 @@ spring.datasource.username=postgres spring.datasource.password=1234IzzoReng spring.jpa.hibernate.ddl-auto=update +``` +wenn du aber statt application.propreties die application.yml benutzen willst: +``` +du kannst dann diese Annotation benutzen: @ConfigurationProperties("app.datasource.main") +Der Inhalt von Anführungszeichen ist der YML Datei angepasst. die YML sieht dann so aus: +app: + datasource: + main: + driver-class-name: + jbdc-url: + username: + passoword: + pool-size: + +Und so weiter und so fort. +die hierarchie von der application.yml entspricht die Parameter von +@ConfigurationProperties("app.datasource.main"), um den Zugriff auf die Daten(url,password,etc...) zu ermöglichen. + +``` + +## <span style="color:gold"> Was ist der Unterschied zwischen @RestController und @Controler? ``` +``` +## <span style="color:gold"> Lombok, warum tendieren die Entwickler dazu in Java mit Framework Spring Boot? +``` +Lombok eliminiert viel Biolerplate-Code wie Getter, Setter, Konstruktoren, hashcode() und viele andere +Standartmethoden. Der Code ist deshalb kürzer und lesbarer. Die Methoden sind konsistent zueinander und das befreit den Code aus Fehlern, +weil dies schon vorimplementiertz sind. -## <span style="color:gold"> Dependency "" Annotationen ? </span> +``` +## <span style="color:gold"> @Data, was kann man damit tun ? </span> +``` +Diese Annotaion gilt als eine Bequemlichkeitsannotaion, denn sie enthält viele Methoden, darunter +@Getter, @Setter, @ToString , @EqualsAndHashCode, @NoArgsConstructor : generiert einen Standardkonsstruktur ohne Argumente, @AllArgsConstructor: generiert einen Konstruktor, der alle Felder der Klasse als Argumente bzw. Parameter akzeptiert, +@RequiredArgsConstructor: generiert einen Konstruktor, der alle als final markierten oder als @NonNull +annotierten Felder als Argumente akzeptiert. +``` diff --git a/pom.xml b/pom.xml index 1deeed9..08a6bbe 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,10 @@ <artifactId>smack-core</artifactId> <version>4.4.4</version> <!-- Aktualisiere die Version auf die neueste stabile Version --> </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + </dependency> </dependencies> diff --git a/src/main/java/com/example/demo1/City.java b/src/main/java/com/example/demo1/City.java index 7095755..4a29f1b 100644 --- a/src/main/java/com/example/demo1/City.java +++ b/src/main/java/com/example/demo1/City.java @@ -2,8 +2,10 @@ package com.example.demo1; import jakarta.persistence.*; +import lombok.Data; +//@Data //wenn diese Annotation von lombok benutzt, dann brauchst du die Setter und Getter und Konstruktoren und vieles anderes nicht extra zu implementieren. @Entity @Table(name = "cities") public class City { @@ -12,7 +14,6 @@ public class City { private Long id; private String name; private boolean isCapital; - public Long getId() { return id; } diff --git a/src/main/java/com/example/demo1/CityRepository.java b/src/main/java/com/example/demo1/CityRepository.java index d7baa3b..75b98c1 100644 --- a/src/main/java/com/example/demo1/CityRepository.java +++ b/src/main/java/com/example/demo1/CityRepository.java @@ -19,9 +19,8 @@ public interface CityRepository extends CrudRepository<City, Long > { //select * From cities where iscapital = x // hier kommt eine Liste raus, also mehrere Datensätze List<City> findAllByIsCapital(Boolean iscapital); - Optional<City> findById(Long id); - void deleteById(Long id); + void deleteById(Long id); } diff --git a/src/main/java/com/example/demo1/Demo1Application.java b/src/main/java/com/example/demo1/Demo1Application.java index 9170502..5f3afd5 100644 --- a/src/main/java/com/example/demo1/Demo1Application.java +++ b/src/main/java/com/example/demo1/Demo1Application.java @@ -13,6 +13,7 @@ import org.springframework.web.server.ResponseStatusException; import java.security.Principal; import java.util.List; import java.util.Optional; +import java.util.Random; @SpringBootApplication @@ -102,7 +103,7 @@ public class Demo1Application { return city.orElse(null); }*/ - @GetMapping("/true") + @GetMapping("/true") //mit Curl: curl -X GET -H "Content-Type: application/json" "http://localhost:8080/true" public List<City> getCapitalCities() { List<City> capitalCities = cityRepositoryy.findAllByIsCapital(true); return capitalCities; @@ -182,13 +183,20 @@ public class Demo1Application { String[] city_container = {"Berlin", "Paris", "Bern", "Damascus"}; + Random random = new Random(); + int randNummer = random.nextInt(4); City city_name = null; - for (int i = 0; i < city_container.length; i++) { - city_name = new City(); - city_name.setName(city_container[i]); - city_name.setCapital(true); CityRepository cRepository = applicationContext.getBean(CityRepository.class); - cRepository.save(city_name); + Optional<City> cityExist = cRepository.findFirstByName(city_container[randNummer]); + System.out.println("->"+ cityExist.get().getName()); + if(cityExist.isPresent() && cityExist.get().getName().equals(city_container[randNummer])){ + System.out.println("Diese Stadt existiert schon"); + }else { + city_name = new City(); + city_name.setName(city_container[randNummer]); + city_name.setCapital(true); + cRepository.save(city_name); + System.out.println("in Postgres abgelegt"); } @@ -200,7 +208,6 @@ public class Demo1Application { SaySomethingService ssservice = applicationContext.getBean(SaySomethingService.class); System.out.println(ssservice.saySomething()+ " ");*/ - } } -- GitLab