En introduktion til Grails 3 og GORM

Udholdenhedstop

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN

1. Oversigt

Dette er en hurtig introduktion til Grails 3 og GORM.

Vi vil selvfølgelig bruge Groovy og - implicit - rammen bruger også Hibernate til ORM, Spring Framework for Dependency Injection, SiteMash til layout og temaer osv.

2. Datakildekonfiguration

Vi kan starte uden at skulle specificere nogen eksplicit datakildekonfiguration - Grails bruger som standard HSQLDB-databasen til udviklings- og testmiljøer.

Men hvis du vil ændre disse standarder, kan du definere din valgte datakilde i ansøgning.yml:

miljøer: udvikling: dataKilde: driverClassName: "com.mysql.jdbc.Driver" url: "jdbc: mysql: // localhost: 8080 / test" dialekt: org.hibernate.dialect.MySQL5InnoDBDialect 

På samme måde kan vi oprette flere miljøer her ved siden af udvikling hvis vi har brug for det.

3. Domæne

Grails er i stand til at oprette databasestrukturen til vores domæneklasser baseret på dbOpret egenskab i databasekonfigurationen.

Lad os definere en af ​​disse domæneklasser her:

Klassebruger {String-brugernavn String-adgangskode String-mail String-aldersstatiske begrænsninger = {brugernavn tom: falsk, unik: sand adgangskode størrelse: 5..10, tom: falsk e-mail-mail: sand, tom: sand}}

Bemærk hvordan vi specificerer vores valideringsbegrænsninger lige i modellen, som holder tingene pæne og rene og uden kommentar.

Disse begrænsninger kontrolleres automatisk af Grails, når enheden vedholdes, og rammen kaster passende valideringsundtagelser, hvis nogen af ​​disse begrænsninger brydes.

Vi kan også specificere GORM-kortlægninger i kortlægning modelens egenskab:

statisk kortlægning = {sorter "brugernavn"}

Nu hvis vi ringer User.list () - vi får resultater tilbage sorteret efter brugernavn.

Vi kunne selvfølgelig opnå det samme resultat ved at videregive sorteringen til listen API:

User.list (sorter: "userName")

4. CRUD-operationer

Når vi ser på API-operationer, stillads spiller en meget interessant rolle i starten; det lader dig generere grundlæggende en CRUD API til en domæneklasse, herunder:

  • De nødvendige synspunkter
  • Controllerhandlinger til standard CRUD-operationer
  • To typer: Dynamisk og Statisk

Sådan fungerer det med dynamisk stillads:

klasse UserController {statisk stillads = sand}

Ved bare at skrive denne enkelt linje genererer rammen 7 metoder ved kørsel: Vis, rediger, slet, opret, gem og opdater. Disse vil blive offentliggjort som API for den pågældende domæneenhed.

Eksempel på statisk stillads:

  • For at oprette en visning med stillads skal du bruge: “grails genererer-views Bruger
  • For at oprette controlleren og se med stilladser brug: “grails genererer-controller bruger
  • For at oprette alt i en enkelt kommando skal du bruge: “grails genererer-alt bruger

Disse kommandoer genererer automatisk den nødvendige VVS til det pågældende domæneobjekt.

Lad os nu se meget hurtigt på at bruge disse operationer - for eksempel til vores Bruger domæneobjekt.

Til Opret ny "bruger" -post:

def bruger = ny bruger (brugernavn: "test", adgangskode: "test123", e-mail: "[email protected]", alder: 14) user.save ()

Til hent en enkelt post:

def bruger = User.get (1) 

Det her API henter domæneobjektet i en redigerbar tilstand. I en skrivebeskyttet tilstand kan vi bruge Læs API:

def bruger = User.read (1)

Til opdater eksisterende post:

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

Og en simpel sletning til en eksisterende post:

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

5. GORM-forespørgsler

5.1. finde

Lad os starte med finde API:

def user = User.find ("fra bruger som u hvor u.username = 'test'")

Vi kan også bruge en anden syntaks til at overføre parameteren:

def user = User.find ("fra bruger som u hvor u.username?", ['test'])

Vi kan også bruge en navngivet parameter:

def user = User.find ("fra bruger som u hvor u.username =?", [brugernavn: 'test'])

5.2. findBy

Grails giver en dynamisk finder-facilitet, der bruger domæneegenskaber til at udføre en forespørgsel ved kørsel og returnere den første matchende post:

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

Du kan finde flere udtryk her.

5.3. Kriterier

Vi kan også hente data ved hjælp af nogle fleksible kriterier:

def user = User.find {username == "test"} def user = User.createCriteria () def results = user.list {like ("userName", "te%") and {between ("age", 10, 20)} rækkefølge ("brugernavn", "desc")}

En hurtig bemærkning her - når du bruger en kriterieforespørgsel, skal du bruge “{}” i stedet for “()”.

5.4. Udfør forespørgsel / opdatering

GORM understøtter også HQL-forespørgselsyntaks - til læsning:

def user = User.executeQuery ("vælg u.userName fra User u hvor u.userName =?", ['test'])

Samt skriveoperationer:

def user = User.executeUpdate ("slet bruger u hvor u.username =?", ['test'])

6. Konklusion

Dette har været en meget hurtig introduktion til Grails og GORM - der skal bruges som en guide til at komme i gang med rammen.

Persistens bund

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN

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