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 для добавления, удаления, обновления и выборки
// С использованием структуры в качестве параметра
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)
// Использование массивов в качестве параметров
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 )