En introduktion til Grails 3 og GORM
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 KURSEN1. 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 få 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: 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.def user = User.executeUpdate ("slet bruger u hvor u.username =?", ['test'])
6. Konklusion
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