logger

package module
v1.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2020 License: Apache-2.0 Imports: 5 Imported by: 0

README

zorm

介绍

golang轻量级ORM,readygo子项目
API文档

go get gitee.com/chunanyong/zorm 
  • 基于原生sql语句编写,是springrain的精简和优化.
  • 自带代码生成器
  • 代码精简,总计2000行左右,注释详细,方便定制修改.
  • 支持事务传播,这是zorm诞生的主要原因
  • 支持MySQL,SQLServer,Oracle,PostgreSQL,SQLite3
  • 支持数据库读写分离

生产使用参考 UserStructService.go

示例
  1. 生成实体类或手动编写,建议使用代码生成器 https://gitee.com/chunanyong/readygo/tree/master/codegenerator

//UserOrgStructTableName 表名常量,方便直接调用
const UserOrgStructTableName = "t_user_org"

// UserOrgStruct 用户部门中间表
type UserOrgStruct struct {
  //引入默认的struct,隔离IEntityStruct的方法改动
  zorm.EntityStruct

  //Id 编号
  Id string `column:"id"`

  //UserId 用户编号
  UserId string `column:"userId"`

  //OrgId 机构编号
  OrgId string `column:"orgId"`

  //ManagerType 0会员,1员工,2主管
  ManagerType int `column:"managerType"`

  //------------------数据库字段结束,自定义字段写在下面---------------//

}

//GetTableName 获取表名称
func (entity *UserOrgStruct) GetTableName() string {
  return UserOrgStructTableName
}

//GetPKColumnName 获取数据库表的主键字段名称.因为要兼容Map,只能是数据库的字段名称.
func (entity *UserOrgStruct) GetPKColumnName() string {
  return "id"
}

  1. 初始化zorm

    dataSourceConfig := zorm.DataSourceConfig{
       DSN:     "root:root@tcp(127.0.0.1:3306)/readygo?charset=utf8&parseTime=true",
       DriverName:   "mysql",
     }
     zorm.NewBaseDao(&dataSourceConfig)
    
  2. var user permstruct.UserStruct
    err := zorm.SaveStruct(context.Background(), &user)
    
  3. err := zorm.DeleteStruct(context.Background(),&user)
    
  4. err := zorm.UpdateStruct(context.Background(),&user)
    //finder更新
    err := zorm.UpdateFinder(context.Background(),finder)
    
  5. finder := zorm.NewSelectFinder(permstruct.UserStructTableName)
    page := zorm.NewPage()
    var users = make([]permstruct.UserStruct, 0)
    err := zorm.QueryStructList(context.Background(), finder, &users, page)
    
  6. 事务传播

    //匿名函数return的error如果不为nil,事务就会回滚
    _, errSaveUserStruct := zorm.Transaction(ctx, func(ctx context.Context) (interface{}, error) {
    
    	//事务下的业务代码开始
    	errSaveUserStruct := zorm.SaveStruct(ctx, userStruct)
    
    	if errSaveUserStruct != nil {
    		return nil, errSaveUserStruct
    	}
    
    	return nil, nil
    	//事务下的业务代码结束
    
    })
    
  7. 生产示例

    //FindUserOrgByUserId 根据userId查找部门UserOrg中间表对象
    func FindUserOrgByUserId(ctx context.Context, userId string, page *zorm.Page) ([]permstruct.UserOrgStruct, error) {
    if len(userId) < 1 {
    	return nil, errors.New("userId不能为空")
    }
    finder := zorm.NewFinder().Append("SELECT re.* FROM  ").Append(permstruct.UserOrgStructTableName).Append(" re ")
    finder.Append("   WHERE re.userId=?    order by re.managerType desc   ", userId)
    
    userOrgs := make([]permstruct.UserOrgStruct, 0)
    errQueryList := zorm.QueryStructList(ctx, finder, &userOrgs, page)
    if errQueryList != nil {
    	return nil, errQueryList
    }
    
    return userOrgs, nil
    }
    
  8. 测试

    //函数测试
    go test -run TestAdd2
    //性能测试
    go test -bench=.
    go test -v -bench=. -cpu=8 -benchtime="3s" -timeout="5s" -benchmem
    

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(msg string, fields ...LogField)

func Error

func Error(err error, fields ...LogField)

func Fatal

func Fatal(msg string, fields ...LogField)

func Info

func Info(msg string, fields ...LogField)

func NewLogger added in v1.0.5

func NewLogger(name string, logFile string, logLevelName string)

NewLogger 初始化日志

func Panic

func Panic(msg error, fields ...LogField)

func Warn

func Warn(msg string, fields ...LogField)

Types

type LogField

type LogField = zap.Field

隔离引用

func Any added in v1.2.3

func Any(key string, value interface{}) LogField

func Bool

func Bool(key string, val bool) LogField

func ByteString

func ByteString(key string, val []byte) LogField

func Duration

func Duration(key string, val time.Duration) LogField

func Float32

func Float32(key string, val float32) LogField

func Float64

func Float64(key string, val float64) LogField

func Int

func Int(key string, val int) LogField

func Int32

func Int32(key string, val int32) LogField

func Int64

func Int64(key string, val int64) LogField

func String

func String(key string, val string) LogField

func Time

func Time(key string, val time.Time) LogField

func Uintptr

func Uintptr(key string, val uintptr) LogField

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL