RED — это ORM для языка Go, вдохновленный beedb. Основная цель проекта — обучение работе с Go. Поддерживает только базу данных PostgreSQL и предоставляет методы для выполнения операций создания, обновления, удаления и выборки.
Можно настраивать SQL-запросы, используя следующие ключевые слова: SELECT / WHERE / AND / ORDER BY / LIMIT / OFFSET / RETURNING.
Установка:
go get github.com/bianweiall/red
```Использование:
Названия таблиц и полей должны начинаться с `_` и заканчиваться строчными английскими буквами.
Пример определения структуры, соответствующей структуре таблицы базы данных (например: User => _user, Id => _id, Name => _name, Time => _time, Age => _age):
```go
type User struct {
Id int `pk:auto` // `pk:auto` указывает на автоматическую последовательность, `pk` — обычный первичный ключ
Name string
Time string `dt` // `dt` указывает на тип данных "current_timestamp" в PostgreSQL
Age int
}
Получение ORM:
err, orm := red.New()
func main() {
var user User
err, orm := red.New()
if err != nil {
panic(err)
}
err = orm.Where("_id=?", 1).Find(&user)
if err != nil {
panic(err)
}
}
Сохранение записи, при этом значения автоинкрементного поля Id и поля Time будут заполнены автоматически. Если указано поле Returning, то будет возвращено значение ошибки и словарь значений; если нет, то вернется значение ошибки и nil.
var user User
user.Name = "小明"
user.Age = 12
err, r := orm.Create(&user)
Сохранение записи и получение ID и имени только что созданной записи.
var user User
user.Name = "小明"
user.Age = 12
err, strs := orm.Returning("_id", "_name").Create(&user)
Обновление всех полей записи (кроме автоинкрементного поля Id).
var user User
user.Name = "鸭蛋"
user.Age = 50
err := orm.Where("_id=?", 1).Update(&user)
Обновление конкретных полей записи.
var user User
user.Name = "鸭蛋"
user.Age = 50
err := orm.Set("_time", "_name", "_age").Where("_id=?", 1).Update(&user)
Удаление записи пользователя.
var user User
err := orm.Where("_id=?", 1).Delete(&user)
```Выбор одной записи пользователя, где поля выбираются по умолчанию, если не указаны явно.
```go
var user User
err := orm.Select("_name", "_age").Where("_id=?", 1).Find(&user)
Выбор множества записей пользователей, где поля выбираются по умолчанию, если не указаны явно.
var users []User
err := orm.Where("_id>?", 1).And("_name like ?", "%ключевое слово%").Find(&users)
Формат названий полей в передаваемых параметрах: "" + строчные английские буквы. Если не указано, используется "" + имя объекта в нижнем регистре, например: "_user".
func (orm *Orm) SetTableName(tableName string) *Orm
Установите имя таблицы ("_book").
SetTableName("_book")
Задайте выбранные поля; если не задано — выбираются все поля по умолчанию.
func (orm *Orm) Select(strs ...string) *Orm
Пример использования:
orm := orm.Select("_id", "_name")
Обновление данных с помощью UPDATE
предложения, где SET
следует за выражением; если не указано — обновляются все поля кроме автоинкрементного первичного ключа.
func (orm *Orm) Set(strs ...string) *Orm
Пример использования:
orm := orm.Set("_age", "_name")
Выражение после WHERE
условия.
func (orm *Orm) Where(str string, strValue ...interface{}) *Orm
Пример использования:
orm := orm.Where("_id >? and _name like ?", 1, "%ключевое слово%")
Ограничение количества записей с помощью LIMIT
и OFFSET
, параметры должны быть положительными целыми числами.
func (orm *Orm) Limit(limit int) *Orm
func (orm *Orm) Offset(offset int) *Orm
Пример использования:
err = orm.Where("_id >?", 1).Limit(10).Offset(5)
Сортировка записей с помощью ORDER BY
.
func (orm *Orm) OrderBy(orderByStrs ...
. string) *Orm
Пример использования:
```go
err := orm.Where("_id > ?", 1).OrderBy("_id desc", "_age asc").Find(&users)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )