Полезный инструмент для выполнения запросов к MySQL.
Исходный код на Go, который отказался от использования ORM.
Связаться со мной: 755808379@qq.com
GitHub адрес: https://github.com/jesusslim/slimmysql
Пример использования:
Полный пример полный пример:
Инициализация (регистрация соединений)
conf, _ := goconfig.LoadConfigFile("./conf/db.ini")
conf_sq := "local"
slimmysql.RegisterConnectionDefault(conf.MustBool(conf_sq, "rwseparate"), conf.MustValue(conf_sq, "host"), conf.MustValue(conf_sq, "port"), conf.MustValue(conf_sq, "db"), conf.MustValue(conf_sq, "user"), conf.MustValue(conf_sq, "pass"), conf.MustValue(conf_sq, "prefix"), false)
Файл конфигурации должен выглядеть следующим образом:
Пример файла конфигурации
[local]
rwseparate = true
user = root
pass = root
host = 127.0.0.1,127.0.0.1,127.0.0.1
port = 3307
db = testgo,testgo2,testgo3
prefix = go_
Множество хостов указывает на разделение на главный и репликационные серверы. Первый адрес является основным сервером, а остальные — репликами.
Затем получите экземпляр при необходимости его использования.
slimsql, err := slimmysql.NewSqlInstanceDefault()
Условия для запроса
Используются map[string]interface{}
как условие для запроса.
Ключ карты представляет собой поле, значение — значение поля.
Операторы сравнения (LIKE
, >
, <
, BETWEEN
) добавляются после имени поля с помощью префиксов _like
, _gt
, _lt
, _between
.
Например, nickname LIKE
: ключ=nickname__like
.
По умолчанию используется оператор =
.
Другие операторы:
LIKE
: __like>
: __gt>=
: __egt<
: __lt<=
: __elt!=
: __neqBETWEEN
: __betweenIN
: __inNOT IN
: __notinIS NULL
: __isnullIS NOT NULL
: __isnotnullКлюч relation
указывает на логическое соединение (AND
, OR
). По умолчанию используется AND
. Для вложенных условий используйте ключ "_"
и передайте map[string]interface{}
.
Пример:
condition := map[string]interface{}{
"relation": "or",
"nickname__like": "Jesus",
"_": map[string]interface{}{
"id__gt": 10385,
"_": map[string]interface{}{
"relation": "or",
"_": map[string]interface{}{
"status": 1,
"acoin__gt": 200,
},
"type": 2,
},
"create_time__between": "1431619200|1433088000",
},
"id__egt": 10575,
}
stds, err := slimsql.Table("students").Where(condition).Page(1, 10).Order("id desc").Fields("id,nickname,nickname_cn,acoin,mobile").Select()
// SQL: Select: SELECT id,nickname,nickname_cn,acoin,mobile FROM `pre_students` WHERE ( id > 14385 AND ( ( status = '1' AND acoin > 200 ) OR type = '2' ) AND ( create_time >= 1431619200 AND create_time <= 1433088000 ) ) OR id >= 10575 OR nickname LIKE '%Jesus%' ORDER BY id desc LIMIT 0,10
Функции:
slimsql.Table("A").Join("left join B on A.id = B.aid")
map
)map
)map
с ключом первого поля)Поддержка транзакций:
Локирование таблиц:
ping (тестирование состояния соединения)
clear (очистка значений объекта slimmysql.Sql
)
Дополнительную информацию можно найти здесь: https://gowalker.org/github.com/jesusslim/slimmysql
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )