db 数据库

更新时间:2026年1月16日 02:55 浏览:145

示例代码:


package controllers

import (
    "strconv"

    "gitee.com/go-nt/db"
    "gitee.com/go-nt/http/server"
    "gitee.com/go-nt/test/app/web/models"
    "gitee.com/go-nt/util/crypto/rand"
)

type Db struct {
}

func (d *Db) Home(ctx *server.Context) {
    ctx.Response.Display("app/web/templates/db/home.html")
}

func (d *Db) AutoMigrate(ctx *server.Context) {

    ctx.Response.Header("Content-Type", "text/html")

    dbMain, err := db.GetInstance("main")
    if err != nil {
        ctx.Response.Write(err.Error())
        return
    }
    err = dbMain.AutoMigrate(&models.User{})
    if err != nil {
        ctx.Response.Write(err.Error())
        return
    }
    ctx.Response.Write("migrate success")
}

func (d *Db) Curd(ctx *server.Context) {

    ctx.Response.Header("Content-Type", "text/html")
    ctx.Response.Write("<meta charset=\"UTF-8\">")

    dbMain, err := db.GetInstance("main")
    if err != nil {
        ctx.Response.Write(err.Error())
        return
    }

    // 创建
    user := models.User{Username: rand.LowercaseLetters(10), Password: rand.Simple(32), Age: 18}
    result := dbMain.Create(&user)

    ctx.Response.Write("新增用户:" + strconv.FormatUint(uint64(user.ID), 10) + "<br>")
    ctx.Response.Write("新增行数:" + strconv.FormatInt(result.RowsAffected, 10) + "<br>")
    if result.Error != nil {
        ctx.Response.Write("Error:" + result.Error.Error() + "<br>")
        return
    }

    // 更新
    user.Age = 20
    result = dbMain.Save(&user)

    ctx.Response.Write("更新行数:" + strconv.FormatInt(result.RowsAffected, 10) + "<br>")
    if result.Error != nil {
        ctx.Response.Write("Error:" + result.Error.Error() + "<br>")
        return
    }

    // 查询
    var users []models.User
    result = dbMain.Where("age = ?", 20).Order("id desc").Limit(10).Find(&users)

    ctx.Response.Write("查询结果:" + strconv.FormatInt(result.RowsAffected, 10) + "<br>")
    if result.Error != nil {
        ctx.Response.Write("Error:" + result.Error.Error() + "<br>")
        return
    }

    for _, u := range users {
        ctx.Response.Write("ID:" + strconv.FormatUint(uint64(u.ID), 10) + " Username:" + u.Username + " Age:" + strconv.Itoa(int(u.Age)) + "<br>")
    }

    // 统计

    var count int64

    dbMain.Model(models.User{}).Count(&count)
    ctx.Response.Write("用户总数:" + strconv.FormatInt(count, 10) + "<br>")

}
导航