gen icon indicating copy to clipboard operation
gen copied to clipboard

自定义SQL模板 - 使用 SELET 指定字段查询无法转义

Open shuqingzai opened this issue 2 years ago • 2 comments

GORM Playground Link

https://github.com/go-gorm/playground/pull/1

Description

type DIYMethod interface {
	// FirstById 根据ID查询第一条记录, 指定字段传入
	//
	// sql(
	// SELECT
	// {{ if len(columns) > 0 }}
	//		{{ for i, column := range columns }}
	// 			@column{{ if i < (len(columns) - 1) }},{{ end }}
	//  	{{ end }}
	// {{ else }}
	// *
	// {{ end }}
	// FROM `@@table`
	// WHERE `id` = @id
	// AND `delete_time` = 0
	// )
	FirstById(id uint64, columns []string) (gen.T, error)
}

上述文件生成的代码,GORM 产生的 SQL 日志如下,字段使用 单引号( '' ) 包裹,而不是使用反引号( `` )

[8.706ms] [rows:1] SELECT 'id', 'mobile' , 'email' FROM `demo` WHERE `id` = 65127101300211712 AND `delete_time` = 0 

shuqingzai avatar Aug 29 '22 09:08 shuqingzai

表列名用@@name

idersec avatar Aug 31 '22 09:08 idersec

表列名用@@name

如果是自定义传入的列名呢?如上面的,传入多个字段,做循环,是否可以说的明白点?@idersec

shuqingzai avatar Sep 01 '22 11:09 shuqingzai

@shuqingzai @@column就可以了

qqxhb avatar Mar 23 '23 07:03 qqxhb