Uvod u gralove 3 i GORM

Vrh postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Pregled

Ovo je kratki uvod u Grails 3 i GORM.

Mi ćemo naravno koristiti Groovy i - implicitno - okvir također koristi Hibernate za ORM, Spring Spring za ubrizgavanje ovisnosti, SiteMash za izgled i teme, itd.

2. Konfiguracija DataSourcea

Možemo započeti bez navođenja bilo kakve eksplicitne konfiguracije izvora podataka - prema zadanim postavkama Grails koristi bazu podataka HSQLDB za okruženja za razvoj i testiranje.

Ali ako želite promijeniti ove zadane postavke, možete definirati odabrani izvor podataka u primjena.iml:

okruženja: razvoj: izvor podataka: driverClassName: "com.mysql.jdbc.Driver" url: "jdbc: mysql: // localhost: 8080 / test" dijalekt: org.hibernate.dialect.MySQL5InnoDBDialect 

Slično tome, ovdje možemo stvoriti više okruženja razvoj ako trebamo.

3. Domena

Grails je sposoban stvoriti strukturu baze podataka za naše klase domena, temeljenu na dbCreate svojstvo u konfiguraciji baze podataka.

Definirajmo ovdje jednu od ovih klasa domena:

Korisnik klase {String userName Lozinka niza String e-adresa String age static constraints = {userName blank: false, unique: true password size: 5..10, blank: false email email: true, blank: true}}

Primijetite kako specificiramo svoj ograničenja provjere prava u modelu, koji održava stvari lijepima i čistima te bez bilješki.

Grails će ta ograničenja automatski provjeriti kad se entitet nastavi, a okvir će izbaciti odgovarajuće iznimke za provjeru valjanosti ako je neko od ovih ograničenja slomljeno.

Također možemo odrediti GORM preslikavanja u mapiranje svojstvo modela:

statičko mapiranje = {sortiraj "userName"}

Sad ako nazovemo User.list () - vratit ćemo rezultate poredano po Korisničko ime.

Mogli bismo naravno postići isti rezultat dodavanjem sortiranja na API popisa:

User.list (sortiraj: "userName")

4. CRUD operacije

Kada pogledamo API operacije, skele u početku igra vrlo zanimljivu ulogu; omogućuje vam generiranje osnovnog CRUD API-ja za klasu domene, uključujući:

  • Potrebni pogledi
  • Radnje kontrolera za standardne CRUD operacije
  • Dvije vrste: dinamička i statička

Evo kako to funkcionira s dinamičkim skelama:

klasa UserController {static scaffold = true}

Samo pisanjem ovog jednog retka, okvir će generirati 7 metoda u vrijeme izvođenja: prikazivanje, uređivanje, brisanje, stvaranje, spremanje i ažuriranje. Oni će biti objavljeni kao API za taj određeni entitet domene.

Primjer statičke skele:

  • Da biste stvorili pogled pomoću skele: "grails generira-pregledava Korisnik
  • Da biste stvorili kontroler i prikaz pomoću skele, upotrijebite: “grails generated-controller Korisnik
  • Da biste stvorili sve u jednoj naredbi, upotrijebite: “grails generiraj-sve Korisnik

Te će naredbe automatski generirati potrebne vodovodne instalacije za taj određeni objekt domene.

Pogledajmo sada vrlo brzo korištenje ovih operacija - na primjer, za našu Korisnik objekt domene.

Do stvoriti novi "korisnički" zapis:

def user = novi korisnik (korisničko ime: "test", lozinka: "test123", e-pošta: "[e-pošta zaštićena]", dob: 14) user.save ()

Do dohvatiti jedan zapis:

def user = User.get (1) 

Ovaj dobiti API će dohvatiti objekt domene u načinu koji se može uređivati. Za način samo za čitanje možemo koristiti čitati API:

def user = User.read (1)

Do ažurirati postojeći zapis:

def user = User.get (1) user.userName = "testUpdate" user.age = 20 user.save () 

I jednostavna operacija brisanja za postojeći zapis:

def user = User.get (1) user.delete ()

5. GORM Upiti

5.1. pronaći

Počnimo s pronaći API:

def user = User.find ("from User as u where u.username = 'test'")

Također možemo koristiti drugu sintaksu za prosljeđivanje parametra:

def user = User.find ("od User as u where u.username?", ['test'])

Također možemo koristiti imenovani parametar:

def user = User.find ("from User as u where u.username =?", [korisničko ime: 'test'])

5.2. pronađiBy

Grails pruža mogućnost dinamičkog pretraživača koji koristi svojstva domene za izvršavanje upita u vrijeme izvođenja i vraćanje prvog odgovarajućeg zapisa:

def user = User.findByUsername ("test") user = User.findByUsernameAndAge ("test", 20) user = User.findByUsernameLike ("tes") user = User.findByUsernameAndAgeNotEquals ("test", "100")

Ovdje možete pronaći više izraza.

5.3. Kriteriji

Također možemo doći do podataka koristeći neke fleksibilne kriterije:

def user = User.find {username == "test"} def user = User.createCriteria () def results = user.list {like ("userName", "te%") and {between ("age", 10, 20)} order ("userName", "desc")}

Kratka napomena ovdje - kada koristite upit s kriterijima, upotrijebite "{}" umjesto "()".

5.4. Izvršite upit / ažuriranje

GORM također podržava sintaksu upita HQL - za operacije čitanja:

def user = User.executeQuery ("odaberite u.userName iz User u where u.userName =?", ['test'])

Kao i operacije pisanja:

def user = User.executeUpdate ("izbriši korisnika u gdje je u.username =?", ['test'])

6. Zaključak

Ovo je vrlo brz uvod u Grails i GORM - koji će se koristiti kao vodič za početak rada s okvirom.

Dno postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

$config[zx-auto] not found$config[zx-overlay] not found