gin框架下创建代码生成器

最近在用Go 的gin框架重构之前PHP开发的老项目,由于基础不扎实,打算从零开始进行开发,在写Model和Service时感觉效率比较低,并且大量代码重复,所以就自己用template模板来实现代码的生成。

其中遇到一些问题,记录一下。

一:在使用模板时不能使用模板定义标签如

{
  {define "index/index.html"}}

{
  {end}}

上述标签如果存在则获取不到模板数据

代码生成模板的正确写法如下:

//model.tmpl
package model

import (
	"fmt"
	"gin-icqqg/config"
	"github.com/gin-gonic/gin"
)

//{
  {.Model}} {
  {.Name}}表
type {
  {.Model}} struct {
	ID         int64      `gorm:"column:id;primaryKey;autoIncrement;type:int(11);" json:"id,omitempty"`
	{
  {- range $i,$v:=.Filed}}
	{
  {$v.Name}}       {
  {$v.Type}}     `gorm:"column:{
  {$v.Column}};type:{
  {$v.SqlType}}({
  {$v.Size}});" json:"{
  {$v.Column}},omitempty"` //{
  {$v.comment}}
	{
  {- end}}
	CreatedAt  *LocalTime `gorm:"column:created_at" json:"created_at,omitempty"`
	UpdatedAt  *LocalTime `gorm:"column:updated_at" json:"updated_at,omitempty"`
	DeletedAt  *LocalTime `gorm:"column:deleted_at" json:"-,omitempty"`
}

type Add{
  {.Model}} struct {
    {
  {- range $i,$v:=.Filed }}
    {
  {$v.Name}}       {
  {$v.Type}}     `form:"{
  {$v.Column}}" json:"{
  {$v.Column}},omitempty"`//{
  {$v.Comment}}
    {
  {- end}}

}
func New{
  {.Model}}() *{
  {.Model}} {
    //自动迁移
	db.AutoMigrate(&{
  {.Model}}{})
	if !db.Migrator().HasTable(&{
  {.Model}}{}) {
        //创建表
		db.Set("gorm:ENGINE", "InnoDB").Migrator().CreateTable(&{
  {.Model}}{})
	}
	return &{
  {.Model}}{}
}
func (m *{
  {.Model}}) TableName() string {
	return "{
  {.TableName}}"
}

//List 获取{
  {.Name}}列表展示的
//get
func (m *{
  {.Model}}) List(c *gin.Context) {
	var {
  {.Model}}List []{
  {.Model}}
	err := db.Model(&{
  {.Model}}{}).Find(&{
  {.Model}}List).Error
	if err != nil {
		config.ErrorLog(fmt.Sprintf("%v", err))
		c.JSON(200, gin.H{"code": 500, "msg&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值