V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
8520ccc
V2EX  ›  Go 编程语言

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

  •  
  •   8520ccc · 284 天前 · 804 次点击
    这是一个创建于 284 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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

    2 条回复    2023-07-24 18:57:23 +08:00
    zxdstyle
        1
    zxdstyle  
       283 天前
    没看懂和官方的有啥区别,这不是一个意思么
    ```
    dao.Lang.ByName("XXX")
    ```
    ```
    dao.Lang.Eq("XXX")
    ```
    8520ccc
        2
    8520ccc  
    OP
       283 天前
    @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()

    至少需要这么写。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2249 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:37 · PVG 16:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.