// Package sql2go... // // Description : sql2go... // // Author : go_developer@163.com<白茶清欢> // // Date : 2021-10-25 4:50 下午 package sql2go import "git.zhangdeman.cn/zhangdeman/consts" // sqlTypeMap mysql数据类型 => go 数据类型映射 // // Author : go_developer@163.com<白茶清欢> // // Date : 4:50 下午 2021/10/25 var sqlTypeMap = map[string]string{ "int": consts.DataTypeInt.String(), "integer": consts.DataTypeInt.String(), "tinyint": consts.DataTypeInt8.String(), "smallint": consts.DataTypeInt16.String(), "mediumint": consts.DataTypeInt32.String(), "bigint": consts.DataTypeInt64.String(), "int unsigned": consts.DataTypeUint.String(), "integer unsigned": consts.DataTypeUint.String(), "tinyint unsigned": consts.DataTypeUint8.String(), "smallint unsigned": consts.DataTypeUint16.String(), "mediumint unsigned": consts.DataTypeUint32.String(), "bigint unsigned": consts.DataTypeUint64.String(), "bit": "byte", "bool": consts.DataTypeBool.String(), "enum": consts.DataTypeString.String(), "set": consts.DataTypeString.String(), "varchar": consts.DataTypeString.String(), "char": consts.DataTypeString.String(), "tinytext": consts.DataTypeString.String(), "mediumtext": consts.DataTypeString.String(), "text": consts.DataTypeString.String(), "longtext": consts.DataTypeString.String(), "blob": consts.DataTypeString.String(), "tinyblob": consts.DataTypeString.String(), "mediumblob": consts.DataTypeString.String(), "longblob": consts.DataTypeString.String(), "date": "time.Time", "datetime": "time.Time", "timestamp": "time.Time", "time": "time.Time", "float": consts.DataTypeFloat64.String(), "double": consts.DataTypeFloat64.String(), "decimal": consts.DataTypeFloat64.String(), "binary": consts.DataTypeString.String(), "varbinary": consts.DataTypeString.String(), "json": consts.DataTypeString.String(), } const ( // DaoTpl 模版 DaoTpl = `// Package {PACKAGE} ... // // Description : {PACKAGE} ... package {PACKAGE} import ( "gorm.io/gorm" "errors" ) // {DATA_STRUCT_NAME} 数据库表的数据结构 {DATA_STRUCT} // New{DATA_STRUCT_DAO} 获取DAO实例 func New{DATA_STRUCT_DAO}() *{DATA_STRUCT_DAO} { return &{DATA_STRUCT_DAO}{ table : "{DB_TABLE_NAME}", } } // {DATA_STRUCT_DAO} sql2go tool generate type {DATA_STRUCT_DAO} struct { table string } // GetDetailBy{PRIMARY_KEY} 根据主键ID获取详情 func ({DAO_RECEIVER} *{DATA_STRUCT_DAO}) GetDetailBy{PRIMARY_KEY}(dbInstance *gorm.DB, {PRIMARY_KEY} {PRIMARY_KEY_TYPE}) (*{DATA_STRUCT_NAME}, error) { var ( err error detail {DATA_STRUCT_NAME} ) if err = dbInstance.Table({DAO_RECEIVER}.table).Where("{PRIMARY_KEY_FIELD} = ?", {PRIMARY_KEY}).Limit(1).First(&detail).Error; nil != err { return nil, err } return &detail, nil } // GetList 获取数据列表 func ({DAO_RECEIVER} *{DATA_STRUCT_DAO}) GetList(dbInstance *gorm.DB, condition map[string]any, limit int, offset int) ([]{DATA_STRUCT_NAME}, error) { if nil == condition { condition = make(map[string]any) } var ( err error list []{DATA_STRUCT_NAME} ) if err = dbInstance.Table({DAO_RECEIVER}.table).Where(condition).Limit(limit).Offset(offset).Find(&list).Error; nil != err { return make([]{DATA_STRUCT_NAME}, 0), err } return list, nil } // Create 创建数据 func ({DAO_RECEIVER} *{DATA_STRUCT_DAO}) Create(dbInstance *gorm.DB, data *{DATA_STRUCT_NAME}) error { if nil == data { return errors.New("data is nil") } return dbInstance.Table({DAO_RECEIVER}.table).Create(data).Error } ` )