GoooQo v0.2.2 已经发布,OQM 技术的 Golang 实现
此版本更新内容包括:
版本
- core/v0.2.2
- rdb/v0.2.2
- web/v0.2.2
特性
rdb
- 支持字段映射实体关系查询: many-to-many/one-to-many/many-to-one/one-to-one
- 对于LIKE条件忽略空字符串
- 对于后缀In/NotIn忽略空数组
- 移除后缀Not
ER 查询示例
表t_menu
有一个列parent_id
,它将id
列本身引用为外键。parent_id
列用于定义菜单项之间的层次父子关系。菜单通过通用RBAC模型作为系统资源分配给用户。那么菜单到用户的实体路径即为:menu,perm,role,user
,用于生成嵌套查询语句。
import . "github.com/doytowin/goooqo/core"
type MenuEntity struct {
IntId
ParentId *int`json:"parentId,omitempty"`
Name *string `json:"name,omitempty"`
}
type MenuQuery struct {
PageQuery
Id *int
// many-to-one:
// 查询特定父菜单的子菜单:
// parent_id IN (SELECT id FROM t_menu WHERE [conditions])
Parent *MenuQuery `entitypath:"menu" localField:"ParentId"`
// one-to-many:
// 查询特定子菜单的父菜单:
// id IN (SELECT parent_id FROM t_menu WHERE [conditions])
Children *MenuQuery `entitypath:"menu" foreignField:"ParentId"`
/**
many-to-many:
查询特定用户可以访问的菜单:
id IN (
SELECT menu_id FROM a_perm_and_menu WHERE perm_id IN (
SELECT perm_id FROM a_role_and_perm WHERE role_id IN (
SELECT role_id FROM a_user_and_role WHERE user_id IN (
SELECT id FROM t_user WHERE [conditions]
)
)
)
)*/
User *UserQuery `entitypath:"menu,perm,role,user"`
}
更多用法请查看文档:https://goooqo.docs.doyto.win/zh/query-mapping/query-object/er-query-field。
详情查看:https://gitee.com/doyto/goooqo/releases/v0.2.2