Golang Go语言中基于gormgen修改的gormgen代码生成器

发布于 1周前 作者 yuanlaile 来自 Go语言

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

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


Golang Go语言中基于gormgen修改的gormgen代码生成器

更多关于Golang Go语言中基于gormgen修改的gormgen代码生成器的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

没看懂和官方的有啥区别,这不是一个意思么
<br>dao.Lang.ByName("XXX")<br>
<br>dao.Lang.Eq("XXX")<br>

更多关于Golang Go语言中基于gormgen修改的gormgen代码生成器的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


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()

至少需要这么写。。。

在Golang生态中,GORM是一个非常流行的ORM(对象关系映射)库,用于简化数据库操作。gormgen作为GORM的一个代码生成器工具,能够根据数据库表结构自动生成相应的GORM模型代码,极大地提高了开发效率。

如果你正在基于gormgen进行修改以定制代码生成逻辑,这里有几个关键点需要注意:

  1. 理解源码:首先,深入阅读gormgen的源码,理解其工作原理,包括如何解析数据库表结构、如何生成Go代码等。

  2. 定制模板gormgen通常使用Go的文本/模板库来生成代码。你可以通过修改这些模板文件来调整生成的代码结构或风格。

  3. 扩展功能:根据需求,可能需要添加额外的功能,比如处理复杂的表关系、生成测试数据等。这通常涉及修改或扩展gormgen的核心逻辑。

  4. 测试与验证:每次修改后,都要进行充分的测试,确保生成的代码正确无误,并且符合你的预期。

  5. 文档与分享:如果修改后的gormgen具有通用性,考虑将其开源,并编写详细的文档,以便其他开发者也能受益。

总之,基于gormgen修改代码生成器是一个既具有挑战性又充满乐趣的过程。通过深入了解其工作原理,你可以根据自己的需求定制出高效的代码生成工具,进一步提升开发效率。

回到顶部