diff --git a/README.md b/README.md index f16356884ed6100ff1f678e8edfdbccf59f36e42..cb961c5920abb93019e8f5b759613b000dfcfba8 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 1deeed91562c639cbf86530bfd4ebf7040893518..08a6bbee1f37cc46cde39ef818ff6283f1510ed8 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 7095755fd56a28b13d5ccd2faf2b8c64d9136711..4a29f1b114290741564b4a6fac80278683630b6e 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 d7baa3bb83ab157b4e19ae745c22351f191e4afa..75b98c12c6dc9f59787ee887c241d15c3b3a033b 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 917050298980958c39727aec473b6a6a51e84811..5f3afd59902c8653e4994cb405ccd6df9c92be5b 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()+ " ");*/ - } }