Documentation ¶
Overview ¶
自定义 ENUM 类型 type XXX byte const AAA XXX = '0'
- @Author: haifengat [email protected]
- @Date: 2023-05-08 13:14:23
- @LastEditors: haifengat [email protected]
- @LastEditTime: 2023-05-08 16:47:28
- @FilePath: /zorm-dm/gin_ext.go
- @Description: gin 访问 zorm-dm
Index ¶
- Variables
- func CreateHandler(h Handler) gin.HandlerFunc
- func CreateSchema(schemaName string) error
- func CreateTable[T IEntity]() error
- func Delete[T IEntity](params map[string]any) (int, error)
- func DeleteByName(tblName string, params map[string]any) (int, error)
- func DeleteObject[T IEntity](c *gin.Context)
- func DropTable[T IEntity]() error
- func ExecuteSql(sqlStr string, values ...any) (int, error)
- func GetColumnName(tblName string) []string
- func GetObjects[T IEntity](c *gin.Context)
- func GetPrimaryKey[T IEntity]() []string
- func GetPrimaryKeyByName(tblName string) ([]string, error)
- func GetTableName[T IEntity]() string
- func InitDao(dmDSN string) (context.Context, error)
- func InitDaoOracle(crmsDSN string) (context.Context, error)
- func Insert[T IEntity](entities ...T) error
- func InsertMap[T IEntity](entities ...map[string]any) error
- func InsertMapByName(tblName string, entities ...map[string]any) error
- func InsertNotZero[T IEntity](entities ...T) error
- func PostObject[T IEntity](c *gin.Context)
- func PutObject[T IEntity](c *gin.Context)
- func QueryMap(sqlStr string, values ...any) ([]map[string]any, error)
- func RegBoolType()
- func RegEnumByteType()
- func RegNumberType()
- func ResponseErr(c *gin.Context, err error, datas ...any)
- func ResponseOK(c *gin.Context, datas ...any)
- func Select[T IEntity](p *PageInfo, params map[string]any, sqlStrAppend ...string) ([]T, error)
- func SelectByStruct[T IEntity](p *PageInfo, t T, sqlStrAppend ...string) ([]T, error)
- func SelectCount[T IEntity](where map[string]any) (int, error)
- func SelectCountByName(tblName string, where map[string]any) (int, error)
- func SelectMap[T IEntity](p *PageInfo, params map[string]any, sqlStrAppend ...string) ([]map[string]any, error)
- func SelectMapByName(tblName string, p *PageInfo, params map[string]any, sqlStrAppend ...string) ([]map[string]any, error)
- func SelectMapColumns[T IEntity](p *PageInfo, params map[string]any, columns []string, sqlStrAppend ...string) ([]map[string]any, error)
- func SelectMapColumnsByName(tblName string, p *PageInfo, params map[string]any, columns []string, ...) ([]map[string]any, error)
- func SelectRow[T IEntity](columnName string, params map[string]any, sqlStrAppend ...string) (any, error)
- func SelectRowByName(tblName string, columnName string, params map[string]any, ...) (any, error)
- func SetDefaultCtx(ctx context.Context)
- func StructToMap(t any, filterZeroField, filterAutoIncrementField bool) map[string]any
- func TableExists(tblName string) bool
- func ToLittleCamelMap(t any) map[string]any
- func ToUpperMap(t any) map[string]any
- func Transaction(fun func() error) error
- func TrunTable[T IEntity]() error
- func Update[T IEntity](entities ...T) (int, error)
- func UpdateMap[T IEntity](where map[string]any, set map[string]any) (int, error)
- func UpdateMapByName(tblName string, where map[string]any, set map[string]any) (int, error)
- func UpdateMapConditions[T IEntity](wheres []map[string]any, set map[string]any) (int, error)
- func UpdateMapConditionsByName(tblName string, wheres []map[string]any, set map[string]any) (int, error)
- type BoolType
- type Entity
- type EnumType
- type Handler
- type IEntity
- type NumericType
- type PageInfo
- type Response
- type TableColumn
Constants ¶
This section is empty.
Variables ¶
var SchemaName = "SYSDBA" // 模式
Functions ¶
func CreateHandler ¶ added in v1.1.2
func CreateHandler(h Handler) gin.HandlerFunc
CreateHandler handler 工厂
用法: r.GET("/users", CreateHandler(HandlerForUserList))
@param Handler handler 业务处理函数 @return gin.HandlerFunc handler 函数
func DeleteByName ¶ added in v1.0.12
DeleteByName 根据表名删除
@param tblName string 表名 @param params map[string]any 删除条件 @return int 删除数量 @return error 错误
func ExecuteSql ¶ added in v1.0.18
ExecuteSql 执行 sql 语句
@param sqlStr string sql进行查询 @param values ...any sql中?对应的结果 @return int 返回影响的行数 @return error 错误
func GetColumnName ¶
GetColumnName 取列名(从dm库中取)
@param tblName 表名,格式: SchemaName.TblName @return []string 列名表
func GetObjects ¶
GetObjects find
@param c 示例:{"pageInfo": {"PageNo": 1,"PageSize": 30}, "qry": {"ID": "ZhangSan"}, "append": "order by ID desc"}
func GetPrimaryKeyByName ¶ added in v1.0.13
GetPrimaryKeyByName 获取主键
@param tblName string 表名 @return []string 主键名称 @return error 错误
func InitDao ¶
InitDao 初始化数据库
注册自定义类型: RegEnumByteType RegBoolType(dm.BIT) RegNumberType(dm.NUMBER,dm.NUMERIC)
@param dmDSN string dm://SYSDBA:SYSDBA001@localhost:5236 @return context.Context 数据层上下文 @return error 错误
func InitDaoOracle ¶ added in v1.0.16
InitDaoOracle 初始化 oracle
应用需要 import _ "github.com/godror/godror"
Go数据库驱动列表:https://github.com/golang/go/wiki/SQLDrivers
@param crmsDSN string @return context.Context 数据上下文 @return error 错误
func Insert ¶
Insert 插入数据
不过滤空值: struct 初始化的字段也会入库, 如 string 字段会以*空白字串*入库
@param entities ...T 插入数据 @return error 错误
func InsertMap ¶ added in v1.0.12
InsertMap 插入数据
@param entities ...map[string]any 插入数据 @return error 错误
func InsertMapByName ¶ added in v1.0.12
InsertMapByName 根据表名插入数据
@param tblName string 表名 @param entities ...map[string]any 插入数据 @return error 错误
func InsertNotZero ¶ added in v1.0.16
InsertNotZero 插入数据
过滤0值(bool:false, int:0, string:""), string字段入库后为 NULL
@param entities ...T 插入数据 @return error 错误
func QueryMap ¶ added in v1.0.16
QueryMap 执行sql指令进行查询
用于多表联查,或其他复杂的情况
@param sqlStr string sql进行查询 @param values ...any sql中?对应的值 @return []map[string]any 结果集 @return error 错误
func RegNumberType ¶ added in v1.0.18
func RegNumberType()
RegNumberType dm 和 oracle Number/Numeric 类型转为 float64
func ResponseErr ¶
ResponseErr 错误响应
@param c @param err error 用 UnWrap 解析 @param datas 与 data data2 对应
func Select ¶
Select 查询, 返回 struct
@param p *PageInfo 分页 @param params map[string]any 查询条件 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []T 返回结果集 @return error 错误
func SelectByStruct ¶ added in v1.0.16
SelectByStruct 查询,条件用 IEntity 实例, 返回 struct
@param p *PageInfo 分页 @param t T 只接受非0值, 若查查询 bool:false int:0 string:"" 的条件,可在 sqlStrAppend 拼接 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []T 返回结果集 @return error 错误
func SelectCount ¶
SelectCount 查询 count(1)
@param where map[string]any 查询条件 @return int count(1) @return error 错误
func SelectCountByName ¶ added in v1.0.9
SelectCountByName 根据表名查询 count(1)
@param tblName string 表名 @param where map[string]any 查询条件 @return int count(1) @return error 错误
func SelectMap ¶
func SelectMap[T IEntity](p *PageInfo, params map[string]any, sqlStrAppend ...string) ([]map[string]any, error)
SelectMap 查询返回 map
@param p *PageInfo 分页 @param params map[string]any 查询条件 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []map[string]any 返回结果集 @return error 错误
func SelectMapByName ¶
func SelectMapByName(tblName string, p *PageInfo, params map[string]any, sqlStrAppend ...string) ([]map[string]any, error)
SelectMapByName 根据表名查询, 返回 map
@param tblName string 表名 @param p *PageInfo 分页 @param params map[string]any 查询条件 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []map[string]any 返回结果集 @return error 错误
func SelectMapColumns ¶ added in v1.0.9
func SelectMapColumns[T IEntity](p *PageInfo, params map[string]any, columns []string, sqlStrAppend ...string) ([]map[string]any, error)
SelectMapColumns 返回 map, 指定字段名
@param p *PageInfo 分页 @param params map[string]any 查询条件 @param columns []string 查询列 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []map[string]any 返回结果集 @return error 错误
func SelectMapColumnsByName ¶ added in v1.0.9
func SelectMapColumnsByName(tblName string, p *PageInfo, params map[string]any, columns []string, sqlStrAppend ...string) ([]map[string]any, error)
SelectMapColumnsByName 根据表名查询, 返回 map 指定列名
**所有 SelectMap 基于此**
@param tblName string 表名 @param p *PageInfo 分页 @param params map[string]any 查询条件 @param columns []string 查询列 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return []map[string]any 返回结果集 @return error 错误
func SelectRow ¶ added in v1.0.9
func SelectRow[T IEntity](columnName string, params map[string]any, sqlStrAppend ...string) (any, error)
SelectRow 查询首行指定列的值
@param columnName string 列名 @param params map[string]any 查询条件 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return any 无效查询返回 nil @return error
func SelectRowByName ¶ added in v1.0.9
func SelectRowByName(tblName string, columnName string, params map[string]any, sqlStrAppend ...string) (any, error)
SelectRowByName 查询首行指定列的值
@param tblName string 表名 @param columnName string 列名 @param params map[string]any 查询条件 @param sqlStrAppend string sql拓展, 如 order by xxx, 不会被 fnd 替换 @return any 无效查询返回 nil @return error
func SetDefaultCtx ¶ added in v1.0.16
SetDefaultCtx 设置默认 ctx
@param ctx context.Context 用于多个 context 时切换, 之后执行 sql 时对应此 context
func StructToMap ¶ added in v1.1.2
StructToMap 结构体转 map
@param t any 不能是指针!!! @param filterZeroField bool 过滤0值字段(bool-false, int-0, string-"", nil) @param filterAutoIncrementField bool 过滤自增字段(用于 insert) @return map [string]any 结果数据
func Update ¶
Update 更新 Struct
@param entities ...T 替换数据(**不能是指针! 不能是指针! 不能是指针!**) @return int 替换数量 @return error 错误
func UpdateMap ¶ added in v1.0.12
UpdateMap UpdateOne 更新(单个条件)
@param where map[string]any 查询条件 @param set map[string]any 替换数据 @return int 替换数量 @return error 错误
func UpdateMapByName ¶ added in v1.0.12
UpdateMapByName 根据表名更新(单个条件)
@param tblName string 表名 @param where map[string]any 查询条件 @param set map[string]any 替换数据 @return int 替换数量 @return error 错误
func UpdateMapConditions ¶ added in v1.0.12
UpdateMapConditions 更新(多条件)
@param wheres []map[string]any 查询条件 @param set map[string]any 替换数据 @return int 替换数量 @return error 错误
func UpdateMapConditionsByName ¶ added in v1.0.12
func UpdateMapConditionsByName(tblName string, wheres []map[string]any, set map[string]any) (int, error)
UpdateMapConditionsByName 根据表名更新
所有 Update 基于此
@param tblName string 表名 @param wheres []map[string]any 查询条件 @param set map[string]any 替换数据 @return int 替换数量(更新数据量为 0 没有符合条件的数据) @return error 错误
Types ¶
type BoolType ¶ added in v1.0.18
type BoolType struct{}
func (BoolType) ConverDriverValue ¶ added in v1.0.18
func (e BoolType) ConverDriverValue(ctx context.Context, columnType *sql.ColumnType, tempDriverValue driver.Value, structFieldType *reflect.Type) (interface{}, error)
ConverDriverValue 数据库列类型,GetDriverValue返回的driver.Value的临时接收值,struct属性类型 非struct类型接收,无法获取到structFieldType,会传入nil 返回符合接收类型值的指针,指针,指针!!!!
type Entity ¶
type Entity struct{}
Entity 实现 IEntity
func (Entity) GetDefaultValueMap ¶ added in v1.1.1
GetDefaultValueMap 获取列的默认值Map,用于Insert和Update Struct对象,UpdateNotZeroValue请使用BindContextMustUpdate方法.返回map的key是Struct属性名,value是默认值,value可以是nil.
func (Entity) GetPkSequence ¶
func (Entity) GetPrimaryKey ¶
GetPrimaryKey 表的主键, 返回 nil 时忽略此函数; 否则以此函数为准, 忽略 tag中的 primaryKey 配置
func (Entity) GetTableName ¶
GetTableName 返回struct类型名;需要struct自行实现
type EnumType ¶
type EnumType struct{}
func (EnumType) ConverDriverValue ¶
func (e EnumType) ConverDriverValue(ctx context.Context, columnType *sql.ColumnType, tempDriverValue driver.Value, structFieldType *reflect.Type) (interface{}, error)
ConverDriverValue 数据库列类型,GetDriverValue返回的driver.Value的临时接收值,struct属性类型 非struct类型接收,无法获取到structFieldType,会传入nil 返回符合接收类型值的指针,指针,指针!!!!
type IEntity ¶
type IEntity interface { zorm.IEntityStruct GetPrimaryKey() []string // 主键 }
type NumericType ¶ added in v1.0.14
type NumericType struct{}
func (NumericType) ConverDriverValue ¶ added in v1.0.14
func (e NumericType) ConverDriverValue(ctx context.Context, columnType *sql.ColumnType, tempDriverValue driver.Value, structFieldType *reflect.Type) (interface{}, error)
ConverDriverValue 数据库列类型,GetDriverValue返回的driver.Value的临时接收值,struct属性类型 非struct类型接收,无法获取到structFieldType,会传入nil 返回符合接收类型值的指针,指针,指针!!!!
func (NumericType) GetDriverValue ¶ added in v1.0.14
func (e NumericType) GetDriverValue(ctx context.Context, columnType *sql.ColumnType, structFieldType *reflect.Type) (driver.Value, error)
GetDriverValue 根据数据库列类型,返回driver.Value的实例,struct属性类型 非struct类型接收,无法获取到structFieldType,会传入nil
type PageInfo ¶
type PageInfo struct { PageNo int `json:"pageNo,omitempty"` PageSize int `json:"pageSize,omitempty"` TotalCount int `json:"totalCount,omitempty"` }
PageInfo 分页数据
func GetQryParams ¶
GetQryParams 取gin的请求参数
@param c 示例:{"pageInfo": {"PageNo": 1,"PageSize": 30}, "qry": {"ID": "ZhangSan"}, "append": "order by ID desc"} @return p 分页 @return params 查询参数 @return sqlAppend 追加(order group....)
type Response ¶
type Response struct { Status string `json:"status"` // success 或 failure Msg string `json:"msg"` // GetObjects 函数返回 查询的结果集 Data interface{} `json:"data"` // GetObjects 函数返回 PageInfo Data2 interface{} `json:"data2"` }
Response 响应体
type TableColumn ¶
type TableColumn struct { ColumnName string // 数据表字段名(字段名or由columns定义) StructFieldName string // 结构体字段名称 ColumnType string // 数据表中的类型定义 Comment string PrimaryKey bool NotNull bool Unique bool Index bool AutoIncrement bool // 自增 Default string }
TableColumn 数据列定义
func GetColumns ¶
func GetColumns[T IEntity]() []TableColumn
GetColumns 取列定义
@return []TableColumn 数据列定义表(列名大写)