En introduksjon til Grails 3 og GORM
Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:
>> KONTROLLER KURSET1. Oversikt
Dette er en rask intro til Grails 3 og GORM.
Vi kommer selvfølgelig til å bruke Groovy og - implisitt - rammeverket bruker også Hibernate for ORM, Spring Framework for Dependency Injection, SiteMash for layout og temaer, etc.
2. Datakildekonfigurasjon
Vi kan starte uten å måtte spesifisere noen eksplisitt datakildekonfigurasjon - Grails bruker som standard HSQLDB-databasen for utviklings- og testmiljøer.
Men hvis du vil endre disse standardene, kan du definere den valgte datakilden i application.yml:
miljøer: utvikling: dataSource: driverClassName: "com.mysql.jdbc.Driver" url: "jdbc: mysql: // localhost: 8080 / test" dialekt: org.hibernate.dialect.MySQL5InnoDBDialect
På samme måte kan vi lage flere miljøer her, ved siden av utvikling hvis vi trenger det.
3. Domene
Grails er i stand til å lage databasestrukturen for domeneklassene våre, basert på db Opprett egenskap i databasekonfigurasjonen.
La oss definere en av disse domeneklassene her:
Klassebruker {String brukernavn String passord String email String age static constraints = {userName blank: false, unique: true password size: 5..10, blank: false email email: true, blank: true}}
Legg merke til hvordan vi spesifiserer våre valideringsbegrensninger rett i modellen, som holder ting pent og rent og uten merknader.
Disse begrensningene vil bli sjekket av Grails automatisk når enheten fortsetter, og rammeverket vil gi passende validerings unntak hvis noen av disse begrensningene blir brutt.
Vi kan også spesifisere GORM-tilordninger i kartlegging egenskapen til modellen:
statisk kartlegging = {sort "userName"}
Nå hvis vi ringer User.list () - vi får tilbake resultater sortert etter brukernavn.
Vi kunne selvfølgelig oppnå det samme resultatet ved å sende sorteringen til listen API:
User.list (sort: "userName")
4. CRUD-operasjoner
Når vi ser på API-operasjoner, stillas spiller en veldig interessant rolle i begynnelsen; det lar deg generere grunnleggende et CRUD API for en domeneklasse, inkludert:
- De nødvendige utsiktene
- Kontrollerhandlinger for standard CRUD-operasjoner
- To typer: Dynamisk og Statisk
Slik fungerer det med dynamisk stillas:
klasse UserController {statisk stillas = true}
Ved å bare skrive denne enkeltlinjen, vil rammeverket generere 7 metoder ved kjøretid: vise, redigere, slette, opprette, lagre og oppdatere. Disse vil bli publisert som API for den aktuelle domenenheten.
Eksempel på statisk stillas:
- For å lage et syn med stillas, bruk: “grails genererer-visninger Bruker“
- For å lage kontrolleren og vise med stillas, bruk: “grails generere-kontroller bruker“
- For å lage alt i en kommando, bruk: “grails genererer alle brukere“
Disse kommandoene vil automatisk generere den nødvendige rørleggerarbeidet for det bestemte domeneobjektet.
La oss nå se veldig raskt på å bruke disse operasjonene - for eksempel for våre Bruker domeneobjekt.
Til opprette ny brukeroppføring:
def bruker = ny bruker (brukernavn: "test", passord: "test123", e-post: "[e-postbeskyttet]", alder: 14) user.save ()
Til hente en enkelt plate:
def bruker = User.get (1)
Dette få API vil hente domenobjektet i redigerbar modus. For en skrivebeskyttet modus kan vi bruke lese API:
def user = User.read (1)
Til oppdater eksisterende post:
def user = User.get (1) user.userName = "testUpdate" user.age = 20 user.save ()
Og en enkel sletteoperasjon for en eksisterende post:
def user = User.get (1) user.delete ()
5. GORM-spørsmål
5.1. finne
La oss starte med finne API:
def user = User.find ("fra bruker som u hvor u.username = 'test'")
Vi kan også bruke en annen syntaks for å sende inn parameteren:
def user = User.find ("fra bruker som u hvor brukernavn?", ['test'])
Vi kan også bruke en navngitt parameter:
def user = User.find ("fra bruker som u hvor u.username =?", [brukernavn: 'test'])
5.2. findBy
Grails gir et dynamisk søkeanlegg som bruker domenegenskaper til å utføre et spørsmål ved kjøretid og returnere den første samsvarende posten:
def user = User.findByUsername ("test") user = User.findByUsernameAndAge ("test", 20) user = User.findByUsernameLike ("tes") user = User.findByUsernameAndAgeNotEquals ("test", "100")
Du finner flere uttrykk her.
5.3. Kriterier
Vi kan også hente data ved hjelp av noen fleksible kriterier:
def user = User.find {username == "test"} def user = User.createCriteria () def results = user.list {like ("userName", "te%") and {between ("age", 10, 20)} rekkefølge ("userName", "desc")}
Et raskt notat her - når du bruker et kriteriespørsmål, bruk “{}” i stedet for “()”.
5.4. Utfør spørring / oppdatering
GORM støtter også HQL-spørresyntaks - for leseoperasjoner:
def user = User.executeQuery ("velg u.userName fra User u hvor u.userName =?", ['test'])
I tillegg til skriveoperasjoner: Dette har vært en veldig rask intro til Grails og GORM - som skal brukes som en guide til å komme i gang med rammeverket.def user = User.executeUpdate ("slett bruker u hvor u.username =?", ['test'])
6. Konklusjon
Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:
>> KONTROLLER KURSET