1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yuyenews-Beerus-DB

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 24.11.2024 06:21 4f6a248

Beerus-DB — это фреймворк для работы с базами данных, который на данный момент поддерживает только MySQL.

Для подключения к базе данных и выполнения основных операций используется библиотека go-sql-driver/mysql. На её основе реализовано множество расширений: управление пулом подключений, работа с несколькими источниками данных, управление транзакциями, операции с одной таблицей без SQL, а также сложные операции с несколькими таблицами, при которых можно писать собственный SQL. В SQL можно использовать заполнители {}. Также можно использовать структуры в качестве параметров для работы с базой данных.

Установка

go get github.com/Beerus-go/Beerus-DB@v1.1.5

go get github.com/go-sql-driver/mysql

Документация https://beeruscc.com/beerusdb

Примеры

  • Добавление, удаление, обновление и выборка данных без использования SQL

    • Запрос данных из указанной таблицы на основе пользовательских условий
    conditions := builder.Create().
        Add("id > ?", 10).
        Add("and (user_name = ? or age > ?)", "bee", 18).
        Add("order by create_time desc", entity.NotWhere).
        Build()
    
    resultMap, err := operation.GetDBTemplate("Data source name").Select("table name", conditions)
    • Обновление данных на основе условий
    // Условия заданы
    conditions := builder.Create().
        Add("id = ?", 1).
        Build()
    
    // Данные для изменения
    data := ResultStruct{UserName: "TestNoSqlUpdate"}
    
    // Выполнение операции модификации
    result, err := operation.GetDBTemplate("Data source name").Update("table name", dbutil.StructToMapIgnore(&data, true),conditions)
    • Удаление данных на основе условий
    // Заданы условия удаления
    conditions := builder.Create().
        Add("id = ?", 2).
    Build()
    
    // Операция удаления
    _, err := operation.GetDBTemplate("Data source name").Delete("table name", conditions)
    • Вставка данных
    data := ResultStruct{
            UserName: "TestNoSqlInsert",
            UserEmail: "xxxxx@163.com",
            UpdateTime: "2021-12-09 13:50:00",
        }
    
    result, err := operation.GetDBTemplate("Data source name").Insert("table name", dbutil.StructToMapIgnore(&data, true))
  • Использование SQL для добавления, удаления, обновления и выборки

    • Добавление, удаление и обновление SQL может быть любым из этих действий:
    // С использованием структуры в качестве параметра
    res := ResultStruct{Id: 1, UserName: "TestUpdateByMap"}
    operation.GetDBTemplate("Data source name").ExecByMap("update xt_message_board set user_name = {user_name} where id = {id}", dbutil.StructToMap(&res))
    
    // Использование массивов в качестве параметров
    param := make([]interface{}, 2)
    param[0] = "TestUpdate"
    param[1] = 1
    
    operation.GetDBTemplate("Data source name").Exec("update xt_message_board set user_name = ? where id = ?", param)
    • Выборка Поддерживаются любые запросы SQL
    // Использование массивов в качестве параметров
    param := make([]interface{}, 1)
    param[0] = 1
    
    resultMap, err := operation.GetDBTemplate("Data source name").SelectList("select * from xt_message_board where id = ?", param)
    
    // С использованием структуры в качестве параметра
    res := ResultStruct{Id: 1}
    resultMap, err := operation.GetDBTemplate("Data source name").SelectListByMap("select * from xt_message_board where id < {id}", dbutil.StructToMap(&res))
    • Запросы с разбиением на страницы
    data := ResultStruct{
        UserName: "TestNoSqlInsert",
        UserEmail: "xxxxx@163.com",
    }
    
    param := entity.PageParam{CurrentPage: 1, PageSize: 20, Params: dbutil.StructToMap(&data)}
    result, err := operation.GetDBTemplate("Data source name").SelectPage("select * from xt_message_board where user_name = {user_name} and user_email = {user_email}", param)
    • Управление транзакциями
    id, err := db.Transaction()
    if err != nil {
        t.Error("TestUpdateTx: " + err.Error())
        return
    }
    
    res := ResultStruct{Id: 1, UserName: "TestUpdateTx"}
    
    ss, err := operation.GetDBTemplateTx(id, "Data source name").ExecByTxMap("update xt_message_board set user_name = {user_name} where id = {id}", dbutil.StructToMap(&res))
    ``` ```

if err != nil { db.Rollback(id) t.Error("Data source name: " + err.Error()) return } log.Println(ss.RowsAffected())

db.Commmit(id)


## License

Beerus имеет лицензию MIT.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yuyenews-Beerus-DB.git
git@api.gitlife.ru:oschina-mirror/yuyenews-Beerus-DB.git
oschina-mirror
yuyenews-Beerus-DB
yuyenews-Beerus-DB
master