Mikaelemmmm / go-zero-looklook

🔥基于go-zero(go zero) 微服务全技术栈开发最佳实践项目。Develop best practice projects based on the full technology stack of go zero (go zero) microservices.
https://go-zero.dev
MIT License
4.18k stars 789 forks source link

关于model生成的疑问 #126

Closed axengine closed 11 months ago

axengine commented 11 months ago

1、以order服务homestayOrderModel为例,生成了包括Trans、SelectBuilder、FindSum等方法,这些方法是如何生成的? 2、对于一些复杂的SQL查询,例如多张表的查询,在go-zero中是怎么操作的?是否可以使用gorm、xorm等去实现?

homestayOrderModel interface {
        Insert(ctx context.Context, session sqlx.Session, data *HomestayOrder) (sql.Result, error)
        FindOne(ctx context.Context, id int64) (*HomestayOrder, error)
        FindOneBySn(ctx context.Context, sn string) (*HomestayOrder, error)
        Update(ctx context.Context, session sqlx.Session, data *HomestayOrder) (sql.Result, error)
        UpdateWithVersion(ctx context.Context, session sqlx.Session, data *HomestayOrder) error
        Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
        SelectBuilder() squirrel.SelectBuilder
        DeleteSoft(ctx context.Context, session sqlx.Session, data *HomestayOrder) error
        FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
        FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
        FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*HomestayOrder, error)
        FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*HomestayOrder, error)
        FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*HomestayOrder, int64, error)
        FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*HomestayOrder, error)
        FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*HomestayOrder, error)
        Delete(ctx context.Context, session sqlx.Session, id int64) error
    }
Mikaelemmmm commented 11 months ago

goctl 有template概念,可以自定义模版 goctl template文档:https://go-zero.dev/docs/tutorials/cli/template looklook的模版地址:https://github.com/Mikaelemmmm/go-zero-looklook/tree/main/deploy/goctl 模版要跟goctl版本号对应上才可以