代码拉取完成,页面将自动刷新
golang开发脚手架
生产使用参考 UserStructService.go
//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"
}
初始化zorm
import _ "github.com/go-sql-driver/mysql"
dataSourceConfig := zorm.DataSourceConfig{
DSN: "root:root@tcp(127.0.0.1:3306)/readygo?charset=utf8&parseTime=true",
DriverName: "mysql",
DBType: "mysql",
}
zorm.NewDBDao(&dataSourceConfig)
增
var user permstruct.UserStruct
err := zorm.Insert(context.Background(), &user)
删
err := zorm.Delete(context.Background(),&user)
改
err := zorm.Update(context.Background(),&user)
//finder更新
err := zorm.UpdateFinder(context.Background(),finder)
查
finder := zorm.NewSelectFinder(permstruct.UserStructTableName)
finder.Append(" order by id asc ")
page := zorm.NewPage()
var users = make([]permstruct.UserStruct, 0)
err := zorm.Query(context.Background(), finder, &users, page)
事务传播
//匿名函数return的error如果不为nil,事务就会回滚
_, errSaveUserStruct := zorm.Transaction(ctx, func(ctx context.Context) (interface{}, error) {
//事务下的业务代码开始
errSaveUserStruct := zorm.Insert(ctx, userStruct)
if errSaveUserStruct != nil {
return nil, errSaveUserStruct
}
return nil, nil
//事务下的业务代码结束
})
生产示例
//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.Query(ctx, finder, &userOrgs, page)
if errQueryList != nil {
return nil, errQueryList
}
return userOrgs, nil
}
//函数测试
go test -run TestAdd2
//性能测试
go test -bench=.
go test -v -bench=. -cpu=8 -benchtime="3s" -timeout="5s" -benchmem
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。