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>")
}