基于 gormgen 修改的 gormgen 代码生成器

341 天前
 8520ccc

今天新增了一些功能,如下:

var (
		data    = &model.Lang{}
		session = &model.Session{}
	)
	data = dao.Lang.ByName("XXX")
	// where name = 'XXX'
	data = dao.Lang.ByCode("XXX")
	// where code = 'XXX'
	data = dao.Lang.SetName("dasd").ByCode("XXX")
	// where name = 'XXX' and code = 'XXX'
	data, err = dao.Lang.Get(12) //单主键(相当于快捷的 First())
	data = dao.Lang.MustGet(12)  //单主键
	session = dao.Session.MustGet(1, 2)
	err = dao.Lang.MustDelete(12)        //单主键
	err = dao.Session.MustDelete(12, 22) //多主键(会假设有多个主键那么就支持传入多个参数。。。)
	return nil
    
    //之前的写法
    {
		var (
			u = dao.Lang
		)
		first, err := u.Where(u.Code.Eq("xxx"), u.Name.Eq("xxx")).First()
	}

上面的 SetXXX/ByXXX 仅对 UniqueIndex 的字段默认自动生成,其他字段需要手动配置启用 和官方不同的是还实现了一些额外的功能( 可以傻瓜式自动生成 gen ,只需要提前写好 gorm 的 struct 即可 也就是先手写数据库结构,再用这个工具生成

之前 pr 给过原始仓库,没合并,也就懒得折腾了。。。有兴趣的可以看看

自行研究食用方法

github:https://github.com/sucold/gen.git

864 次点击
所在节点    Go 编程语言
2 条回复
zxdstyle
340 天前
没看懂和官方的有啥区别,这不是一个意思么
```
dao.Lang.ByName("XXX")
```
```
dao.Lang.Eq("XXX")
```
8520ccc
340 天前
@zxdstyle dao.Lang.ByName("XXX") 直接拿到结果了

dao.Lang.XXX.Eq("XXX")只是一个条件语句 相当于 where(xxx,xxx)

官方的写法要达到相同的效果
var (
u = dao.Lang
)
first, err := u.Where(u.Code.Eq("xxx")).First()

至少需要这么写。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX