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 (*{
  {.Model}}) TableName() string {
    return "{
  {.TableName}}"
}

//List 获取{
  {.Name}}列表展示的
//get
func (*{
  {.Model}}) List(*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, "

 

转载:https://blog.csdn.net/weixin_41667637/article/details/129590132

 

版权声明:
作者:89391311
链接:https://www.csev.cn/share/code/20240403150.html/
来源:测试分享
版权声明:本文欢迎任何形式转载,转载时完整保留本声明信息(包含原文链接、原文出处、原文作者、版权声明)即可。本文后续所有修改都会第一时间在原始地址更新。
THE END
根据我国《计算机软件保护条例》第十七条规定:“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录