Току що обявих новия курс Learn Spring , фокусиран върху основите на Spring 5 и Spring Boot 2:
>> ПРЕГЛЕД НА КУРСА1. Общ преглед
Това е кратко въведение в Grails 3 и GORM.
Разбира се, ще използваме Groovy и - по подразбиране - рамката също използва Hibernate за ORM, Spring Framework за впръскване на зависимост, SiteMash за оформление и теми и т.н.
2. Конфигуриране на DataSource
Можем да започнем, без да се налага да посочваме някаква изрична конфигурация на източника на данни - по подразбиране Grails използва базата данни HSQLDB за среди за разработка и тестване.
Но ако искате да промените тези настройки по подразбиране, можете да дефинирате избрания източник на данни в application.yml :
environments: development: dataSource: driverClassName : "com.mysql.jdbc.Driver" url : "jdbc:mysql://localhost:8080/test" dialect : org.hibernate.dialect.MySQL5InnoDBDialect
По същия начин тук можем да създадем множество среди, до разработка, ако е необходимо.
3. Домейн
Grails е способен да създаде структурата на базата данни за нашите класове на домейни, базирана на свойството dbCreate в конфигурацията на базата данни.
Нека дефинираме един от тези класове на домейни тук:
Class User { String userName String password String email String age static constraints = { userName blank: false, unique: true password size: 5..10, blank: false email email: true, blank: true } }
Обърнете внимание как определяме нашите ограничения за валидиране точно в модела , който поддържа нещата приятни и чисти и без анотации.
Тези ограничения ще бъдат проверени от Grails автоматично, когато обектът се запазва и рамката ще изведе подходящи изключения за проверка, ако някое от тези ограничения е нарушено.
Също така можем да посочим GORM картографирания в свойството за картографиране на модела:
static mapping = { sort "userName" }
Сега, ако се обадим на User.list () - ще получим обратно резултатите, сортирани по потребителско име .
Разбира се, бихме могли да постигнем същия резултат, като предадем сортирането към API на списъка:
User.list(sort: "userName")
4. CRUD операции
Когато разглеждаме операциите на API, скелето играе много интересна роля в началото; той ви позволява да генерирате основен CRUD API за клас на домейн, включително:
- Необходимите гледки
- Действия на контролера за стандартните CRUD операции
- Два типа: динамичен и статичен
Ето как работи това с динамично скеле:
class UserController { static scaffold = true }
Само като напишете този единичен ред, рамката ще генерира 7 метода по време на изпълнение: показване, редактиране, изтриване, създаване, записване и актуализиране. Те ще бъдат публикувани като API за конкретния обект на домейна.
Пример за статично скеле:
- За да създадете изглед с помощта на скеле: „ grails generate-views User “
- За да създадете контролера и изгледа със скеле, използвайте: „ grails generate-controller user “
- За да създадете всичко в една команда, използвайте: „ grails gene-all User “
Тези команди ще генерират автоматично необходимия водопровод за конкретния обект на домейна.
Нека сега да разгледаме много бързо използването на тези операции - например за нашия обект на потребителски домейн.
За да създадете нов “потребителски” запис :
def user = new User(username: "test", password: "test123", email: "[email protected]", age: 14) user.save()
За да извлечете един запис :
def user = User.get(1)
Този get API ще извлече обекта на домейна в режим за редактиране. За режим само за четене можем да използваме API за четене :
def user = User.read(1)
За да актуализирате съществуващия запис :
def user = User.get(1) user.userName = "testUpdate" user.age = 20 user.save()
И проста операция за изтриване на съществуващ запис:
def user = User.get(1) user.delete()
5. GORM заявки
5.1. намирам
Нека започнем с API за намиране :
def user = User.find("from User as u where u.username = 'test' ")
Също така можем да използваме различен синтаксис за предаване на параметъра:
def user = User.find("from User as u where u.username?", ['test'])
Можем да използваме и посочен параметър:
def user = User.find("from User as u where u.username=?", [username: 'test'])
5.2. findBy
Grails предоставя средство за динамично търсене, което използва свойства на домейна за изпълнение на заявка по време на изпълнение и връщане на първия съвпадащ запис:
def user = User.findByUsername("test") user = User.findByUsernameAndAge("test", 20) user = User.findByUsernameLike("tes") user = User.findByUsernameAndAgeNotEquals("test", "100")
Можете да намерите повече изрази тук.
5.3. Критерии
Също така можем да извличаме данни, като използваме някои гъвкави критерии:
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") }
Бърза бележка тук - когато използвате заявка за критерии, използвайте „{}“ вместо „()“.
5.4. Изпълнете заявка / актуализация
GORM също поддържа синтаксиса на HQL заявката - за операции на четене:
def user = User.executeQuery( "select u.userName from User u where u.userName = ?", ['test'])
Освен операции за запис:
def user = User.executeUpdate("delete User u where u.username =?", ['test'])
6. Conclusion
This has been a very quick intro to Grails and GORM – to be used as a guide to getting started with the framework.
Persistence bottom I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:
>> CHECK OUT THE COURSE