@
ZSeptember 你的方案不好用.我的方案,使用与 java 对比如下:
定义 SQL
type SqlAction struct {
SysRoleDel func(roleId int64, roleId2 int64) (int64, error) `delete from SysRole where id=? and creator!=0 and 0=(SELECT count(*) from SysUserRole where roleId=?)`
// insert ,delete update 都可以使用
// select 可以返回 int,int64,string,map[string]string []int,[]......... []map[string]string object 都能反射
}
类似 JAVA spring-data interface 定义 SQL
sqlAction := &SqlAction{}
orm := GetGpa("mysql", "root:root@tcp(127.0.0.1:3306)/base-sys-user?timeout=30s&charset=utf8&parseTime=true",
sqlAction)
golang 没有 java 的注入之类,显示实例化,java 的实例化可以通过注入,这个可以是全局变量
调用: sqlAction.SysRoleDel(48)
与 java 一样方便。
一个 orm 框架,至少要分离 sql 的调用。
GetDb().Table("model").Find(&model, " id =? ", id) 这种设计肯定是没有理解 java 的 spring-data 接口设计,
也是很多 java 开发者看起来比较怪异的地方
@
glues go 写业务逻辑与 java 一样方便,只是你不熟悉而已,至少需要一年以上的累积,go 的起步较高,
它是认为开发者已经精通一门开发语言了,一个好的项目推广比较难,一般是一个公司,或是先发,累积。