Mysql操作¶
重要数据结构¶
ColQueryItem:
type ColQueryItem struct {
Name string //列名称
Condition string //查询条件(=、>、< ...)
Values []interface{} //列值
}
这个结构体有两个用途:
- 查询时用于设置需要的列的查询条件
- 编辑时用于设置要更新的列的值
用法¶
Config¶
结构定义:
type Config struct {
*mysql.Config
LogLevel int
}
使用NewConfig方法获得初始化结构:
func NewConfig(user, pass, host, port, dbname string) *Config
Client¶
这个对象用于直接操作mysql,里面有一些基础操作方法和常用方法的封装:
func NewClient(config *Config, logger golog.ILogger) (*Client, error)
SimpleQueryBuilder¶
这个对象用于拼装最常用到的sql语句。
它的设计并没有想解决全部的sql语句拼装,我们总结了项目中最常用到的一些重点sql语句,通过它可以很方便的拼装出来。
里面的方法名和sql语句中的关键字保持一致,很容易理解。
示例:
sqb:=new(SimpleQueryBuilder)
sqb.Insert(tableName, colNames...).
Values(colsValues...)
sqb.Delete(tableName).
WhereConditionAnd(NewColQueryItem("id", COND_EQUAL, id))
sqb.Update(tableName).
Set(setItems...).
WhereConditionAnd(NewColQueryItem("id", COND_EQUAL, id))
sqb.Select(what, tableName).
WhereConditionAnd(NewColQueryItem("id", COND_EQUAL, id))
常用where条件支持:
const (
COND_EQUAL = "=" //值放在ColQueryItem.Values[0]
COND_NOT_EQUAL = "!=" .
COND_LESS = "<" .
COND_LESS_EQUAL = "<=" .
COND_GREATER = ">" .
COND_GREATER_EQUAL = ">=" .
COND_IN = "in" //值放在ColQueryItem.Values[0]、[1] ...
COND_NOT_IN = "not in" .
COND_LIKE = "like" //值放在ColQueryItem.Values[0],需要自己添加"%"
COND_BETWEEN = "between" //ColQueryItem.Values[0]为min值,[1]为max值
)