LCS PREMIUM King Of Underground Postat Mai 21 LCS PREMIUM Postat Mai 21 Obiectivele acoperite in acest tutorial : Construirea unei clase de tip Model luand ca exemplu clasa Utilizatori (pentru proiectul nostru) care sa contina urmatoarele campuri : Cod Unic de Inregistrare (ID) exprimat in Long sau Numar Natural Distinct (Cheie Primara) ; Nume de Utilizator exprimat in String (Sir de caracter) , unic si nenul ; Adresa de Mail exprimat in String (Sir de caracter) , unic si nenul ; Parola exprimata in String (Sir de caracter) si nenul ; (NU E NECESAR SA FIE UNIC) ; Interdictie exprimat in valoare Booleana (True/False) ; Data Nasterii exprimat in LocalDate (Data de Nastere) . Sa incepem Vom avea nevoie de un pachet (numit Model) , respectiv o clasa de tip Model numita "User" , pe care le vom construi la radacina proiectului Adnotam clasa Utilizatori ca "Entitate" (de tip Model) si setam numele tabelei "Utilizatori LeagueCS" : package com.example.demo.Model; import jakarta.persistence.Entity; import jakarta.persistence.Table; @Entity // Clasa de tip Model (ENTITATE SQL) @Table(name = "Utilizatori LeagueCS") // Setam numele tabelei ("Utilizatori LeagueCS") ; public class User { } Adaugam campurile aferentei clasei Utilizatori mentionate la obiective cu caracteristicile lor : ...... public class User { /////// Adaugam Campurile ///// /// ID UTILIZATOR @Id // Cheie Primara (UNIC SI NENULA) @GeneratedValue(strategy = GenerationType.IDENTITY) // GENERARE AUTOMATA ID (DE LA 0 LA N ...) @Column(name = "ID UTILIZATOR") // NUMELE CAMPULUI IN BAZA DE DATE private Long idUserLeagueCS; // CAMPUL DIN MODEL /// NUME UTILIZATOR @NonNull // OBLIGATORIU IN CONSTRUCTIA OBIECTULUI (ADNOTARE LOMBOK) @Column(name="NUME UTILIZATOR" , unique = true , nullable = false) // NUMELE CAMPULUI IN BAZA DE DATE , UNICAT (NU TREBUIE SA EXISTE UTILIZATOR CU ACELASI NUME SAU FARA !! ) @JsonProperty("username") private String nameUserLeagueCS; //// Adresa Mail Utilizator (IDEM) @NonNull @Column(name="ADRESA MAIL",unique = true,nullable = false) @JsonProperty("emailAddess") private String emailAddressLeagueCS; //// Parola Utilizator (IDEM CU EXCEPTIA CA POATE FI GENERAL ) @NonNull @Column(name="PAROLA",nullable = false) @JsonProperty("password") private String passwordLeagueCS; //// Interdictie Utilizator (IDEM DOAR CA E O VALOARE BOOLEANA , PORNESTE CU O VALOARE FALSA IMPLICIT) @Column(name="INTERDICTIE",nullable = false) @JsonProperty("forbidden") @Value("${props.forbidden:false}") // VALOARE DEFAULT "FALSE" care se poate modifica ulterior . private Boolean forbiddenLeagueCS; /// Data de Nastere @NonNull @Column(name="DATA NASTERE",nullable = false) @JsonProperty("bornDate") @JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "dd/MM/yyyy") /// DATA DE NASTERE TREBUIE SA FIE IN FORMATUL "yyyy/MM/dd" // (De exemplu , "11/03/2024" , alte variatii NU sunt acceptate . ) private LocalDate bornDateLeagueCS; } NOTA ** : TEXTELE PRECEDATE DE "//" SUNT CONSIDERATE CA COMENTARII SI SUNT OMISE DE COMPILATOR !!! Adaugam (prin Lombok) constructorii , implicit si cel cu parametrii , cei adnotati (Campurile) cu "NonNull" sunt luati in considerare ca Paramatrii ...... @RequiredArgsConstructor // Constructor cu parametrii (aia adnotati cu "NonNull") ; @NoArgsConstructor // Constructor Implicit (Default fara parametrii) ; public class User { .... } Adaugam "getteri" si "setteri" (prin Lombok) pentru accesul si modificarea campurilor PRIVATE (acces indirect) : ........ @Getter // Adauga getteri pentru toate campurile @Setter // Adauga setteri pentru toate campurile public class User { ....... } Adaugam o functie derivata "toString" pentru afisare obiectului in format "String" (Prin Lombok) : .... @ToString public class User { ..... } Adaugam functiile derivate "hash" & "equal" pentru clasa noastra : ....... public class User { ..... //////////// Functii Derivate @Override // Functie derivata din Clasa Object public int hashCode() // Genereaza un cod unic alocat fiecarui obiect in functie de algoritm { return (int) (idUserLeagueCS * nameUserLeagueCS.hashCode() * emailAddressLeagueCS.hashCode() * passwordLeagueCS.hashCode() *bornDateLeagueCS.hashCode() * forbiddenLeagueCS.hashCode()); // DUPA ACEST ALGORITM DE CALCUL , VA REZULTAT UN COD UNIC PENTRU // FIECARE OBIECT ASOCIAT AL ACESTEI CLASE } @Override public boolean equals(Object otherUserLeagueCS) /// COMPARA FIECARE OBIECT ASOCIAT AL ACESTEI CLASE // NE AJUTA SA AFLAM DACA MAI EXISTA UN UTILIZATOR CU ACELASI NUME & ADRESA DE MAIL { if(this.getClass() != otherUserLeagueCS.getClass()) // OBIECTUL LUAT LA COMPARATIE NU ESTE ASOCIAT CU CLASA NOASTRA { return false; // RETURNAM FALSE } if(this == otherUserLeagueCS) // OBIECTUL IN CAUZA ESTE O CLONA (CAZ IMPOSIBIL ORICUM) { return true; // RETURN TRUE } else{ // DACA AVEM ACELASI NUME SAU ADRESA DE MAIL INTRE UTILIZATORI INSEAMNA CA SUNT ASEMANATORI INTRE EI !! return nameUserLeagueCS.equals(((User) otherUserLeagueCS).nameUserLeagueCS) || emailAddressLeagueCS.equals(((User) otherUserLeagueCS).emailAddressLeagueCS); } } } CODUL FINAL PENTRU MODEL AR TREBUI SA ARATE ASA : package com.example.demo.Model; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.persistence.*; import lombok.*; import org.springframework.beans.factory.annotation.Value; import java.time.LocalDate; @Entity // Clasa de tip Model (ENTITATE SQL) @Table(name = "Utilizatori LeagueCS") // Setam numele tabelei ("Utilizatori LeagueCS") ; @RequiredArgsConstructor // Constructor cu parametrii (aia adnotati cu "NonNull") ; @NoArgsConstructor // Constructor Implicit (Default fara parametrii) ; @Getter @Setter @ToString public class User { /////// Adaugam Campurile ///// /// ID UTILIZATOR @Id // Cheie Primara (UNIC SI NENULA) @GeneratedValue(strategy = GenerationType.IDENTITY) // GENERARE AUTOMATA ID (DE LA 0 LA N ...) @Column(name = "ID UTILIZATOR") // NUMELE CAMPULUI IN BAZA DE DATE private Long idUserLeagueCS; // CAMPUL DIN MODEL /// NUME UTILIZATOR @NonNull // OBLIGATORIU IN CONSTRUCTIA OBIECTULUI (ADNOTARE LOMBOK) @Column(name="NUME UTILIZATOR" , unique = true , nullable = false) // NUMELE CAMPULUI IN BAZA DE DATE , UNICAT (NU TREBUIE SA EXISTE UTILIZATOR CU ACELASI NUME SAU FARA !! ) @JsonProperty("username") private String nameUserLeagueCS; //// Adresa Mail Utilizator (IDEM) @NonNull @Column(name="ADRESA MAIL",unique = true,nullable = false) @JsonProperty("emailAddess") private String emailAddressLeagueCS; //// Parola Utilizator (IDEM CU EXCEPTIA CA POATE FI GENERAL ) @NonNull @Column(name="PAROLA",nullable = false) @JsonProperty("password") private String passwordLeagueCS; //// Interdictie Utilizator (IDEM DOAR CA E O VALOARE BOOLEANA , PORNESTE CU O VALOARE FALSA IMPLICIT) @Column(name="INTERDICTIE",nullable = false) @JsonProperty("forbidden") @Value("${props.forbidden:false}") // VALOARE DEFAULT "FALSE" care se poate modifica ulterior . private Boolean forbiddenLeagueCS; /// Data de Nastere @NonNull @Column(name="DATA NASTERE",nullable = false) @JsonProperty("bornDate") @JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "dd/MM/yyyy") /// DATA DE NASTERE TREBUIE SA FIE IN FORMATUL "yyyy/MM/dd" // (De exemplu , "11/03/2024" , alte variatii NU sunt acceptate . ) private LocalDate bornDateLeagueCS; //////////// Functii Derivate @Override // Functie derivata din Clasa Object public int hashCode() // Genereaza un cod unic alocat fiecarui obiect in functie de algoritm { return (int) (idUserLeagueCS * nameUserLeagueCS.hashCode() * emailAddressLeagueCS.hashCode() * passwordLeagueCS.hashCode() *bornDateLeagueCS.hashCode() * forbiddenLeagueCS.hashCode()); // DUPA ACEST ALGORITM DE CALCUL , VA REZULTAT UN COD UNIC PENTRU // FIECARE OBIECT ASOCIAT AL ACESTEI CLASE } @Override public boolean equals(Object otherUserLeagueCS) /// COMPARA FIECARE OBIECT ASOCIAT AL ACESTEI CLASE // NE AJUTA SA AFLAM DACA MAI EXISTA UN UTILIZATOR CU ACELASI NUME & ADRESA DE MAIL { if(this.getClass() != otherUserLeagueCS.getClass()) // OBIECTUL LUAT LA COMPARATIE NU ESTE ASOCIAT CU CLASA NOASTRA { return false; // RETURNAM FALSE } if(this == otherUserLeagueCS) // OBIECTUL IN CAUZA ESTE O CLONA (CAZ IMPOSIBIL ORICUM) { return true; // RETURN TRUE } else{ // DACA AVEM ACELASI NUME SAU ADRESA DE MAIL INTRE UTILIZATORI INSEAMNA CA SUNT ASEMANATORI INTRE EI !! return nameUserLeagueCS.equals(((User) otherUserLeagueCS).nameUserLeagueCS) || emailAddressLeagueCS.equals(((User) otherUserLeagueCS).emailAddressLeagueCS); } } } Salvam iar cand rulam codul vom avea inregistrarea SQL in consola precum ca s-a adaugat tabela in baza de date : Iar daca vizualizam in HeidiSQL (softul instalat cu MariaDB) , conectandu ne cu credentialele aferente bazei de date vom avea : PS 1 * : MULTUMESC PENTRU ATENTIE , PENTRU RECLAMATII , SUGESTII SI PROBLEME PM ME SAU COMENTARIU IN TOPIC ; PS 2 * : SURSA CREATA SI INSPIRATA DE CATRE MINE PENTRU UTILIZATORI LEAGUECS !! PS 3 * : DACA VA PLACE , NU UITATI SA LASATI O APRECIERE !!
Postări Recomandate