当前位置: 首页 > news >正文

建设商城类的网站要多少钱百度指数怎么看排名

建设商城类的网站要多少钱,百度指数怎么看排名,wordpress萨隆,详情页模板套用文章目录 golang操作数据库ORM:GORM 包介绍及实战一、什么是GORM 包二、GORM基本使用官方快速开始demo 一些 GORM 提示和注意事项 参考 golang操作数据库ORM:GORM 包介绍及实战 一、什么是GORM 包 官网:https://gorm.io/ github&#xff1a…

文章目录

  • golang操作数据库ORM:GORM 包介绍及实战
    • 一、什么是GORM 包
    • 二、GORM基本使用
      • 官方快速开始demo
    • 一些 GORM 提示和注意事项
  • 参考

golang操作数据库ORM:GORM 包介绍及实战

一、什么是GORM 包

官网:https://gorm.io/
github:https://github.com/go-gorm/gorm
官方文档:https://gorm.io/zh_CN/docs/index.html

GORM 是 Go 语言的 ORM 包,功能强大,调用方便。像腾讯、华为、阿里这样的大厂,都在使用 GORM 来构建企业级的应用。

  • 全功能 ORM
  • 关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承)
  • Create,Save,Update,Delete,Find 中钩子方法
  • 支持 Preload、Joins 的预加载
  • 事务,嵌套事务,Save Point,Rollback To to Saved Point
  • Context、预编译模式、DryRun 模式
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • SQL 构建器,Upsert,锁,Optimizer/Index/Comment Hint,命名参数,子查询
  • 复合主键,索引,约束
  • 自动迁移
  • 自定义 Logger
  • 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
  • 每个特性都经过了测试的重重考验
  • 开发者友好

二、GORM基本使用

官方快速开始demo

官方文档:https://gorm.io/docs/

package mainimport ("gorm.io/gorm""gorm.io/driver/sqlite"
)type Product struct {gorm.ModelCode  stringPrice uint
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("failed to connect database")}// Migrate the schemadb.AutoMigrate(&Product{})// Createdb.Create(&Product{Code: "D42", Price: 100})// Readvar product Productdb.First(&product, 1) // find product with integer primary keydb.First(&product, "code = ?", "D42") // find product with code D42// Update - update product's price to 200db.Model(&product).Update("Price", 200)// Update - update multiple fieldsdb.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fieldsdb.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})// Delete - delete productdb.Delete(&product, 1)
}

db.AutoMigrate 意思 表不存在,会帮你创建表~
在 GORM 中,db.AutoMigrate(&Product{}) 函数只会在表不存在时执行数据库的自动迁移操作。如果指定的表已经存在于数据库中,并且与模型定义匹配,AutoMigrate 函数将不会对表结构进行任何更改。

  • 连接和关闭数据库。连接数据库时,可能需要设置一些参数,比如最大连接数、最大空闲连接数、最大连接时长等。
  • 插入表记录。可以插入一条记录,也可以批量插入记录。
  • 更新表记录。可以更新某一个字段,也可以更新多个字段。
  • 查看表记录。可以查看某一条记录,也可以查看符合条件的记录列表。
  • 删除表记录。可以删除某一个记录,也可以批量删除。删除还支持永久删除和软删除。

使用思路:
0) 创建一个GORM数据库连接
GORM中,你可以使用gorm.Open()方法来打开数据库连接。根据你的数据库类型和连接配置,选择合适的数据库驱动。

db, err := gorm.Open("sqlite3", dbPath)
if err != nil {ylog.Errorf("uploadFile", "open db failed, err:%v", err)return
}
defer db.Close()

1) 定义与数据库表对应的模型结构体
首先定义了一个 GORM 模型(Models),Models 是标准的 Go struct,用来代表数据库中的一个表结构。我们可以给 Models 添加 TableName 方法,来告诉 GORM 该 Models 映射到数据库中的哪张表。
Models 定义如下:

type Product struct {gorm.ModelCode  string `gorm:"column:code"`Price uint   `gorm:"column:price"`
}// TableName maps to mysql table name.
func (p *Product) TableName() string {return "product"
}

如果没有指定表名,则 GORM 使用结构体名的蛇形复数作为表名。例如:结构体名为 DockerInstance ,则表名为 dockerInstances 。

  1. 解析命令行参数,建立数据库链接
    在之后的代码中,使用 Pflag 来解析命令行的参数,通过命令行参数指定数据库的地址、用户名、密码和数据库名。之后,使用这些参数生成建立 MySQL 连接需要的配置文件,并调用 gorm.Open 建立数据库连接:

完整测试验证代码:

package mainimport ("fmt""log""github.com/spf13/pflag""gorm.io/driver/mysql""gorm.io/gorm"
)type Product struct {gorm.ModelCode  string `gorm:"column:code"`Price uint   `gorm:"column:price"`
}// TableName maps to mysql table name.
func (p *Product) TableName() string {return "product"
}var (host     = pflag.StringP("host", "H", "127.0.0.1:3306", "MySQL service host address")username = pflag.StringP("username", "u", "root", "Username for access to mysql service")password = pflag.StringP("password", "p", "root", "Password for access to mysql, should be used pair with password")database = pflag.StringP("database", "d", "test", "Database name to use")help     = pflag.BoolP("help", "h", false, "Print this help message")
)func main() {// Parse command line flagspflag.CommandLine.SortFlags = falsepflag.Usage = func() {pflag.PrintDefaults()}pflag.Parse()if *help {pflag.Usage()return}dns := fmt.Sprintf(`%s:%s@tcp(%s)/%s?charset=utf8&parseTime=%t&loc=%s`,*username,*password,*host,*database,true,"Local")db, err := gorm.Open(mysql.Open(dns), &gorm.Config{})if err != nil {panic("failed to connect database")}// 不建议在正式的代码中自动迁移表结构,生产环境注意注掉本行// 1. Auto migration for given modelsdb.AutoMigrate(&Product{})// 2. Insert the value into databaseif err := db.Create(&Product{Code: "D42", Price: 100}).Error; err != nil {log.Fatalf("Create error: %v", err)}PrintProducts(db)// 3. Find first record that match given conditionsproduct := &Product{}if err := db.Where("code= ?", "D42").First(&product).Error; err != nil {log.Fatalf("Get product error: %v", err)}// 4. Update value in database, if the value doesn't have primary key, will insert itproduct.Price = 200if err := db.Save(product).Error; err != nil {log.Fatalf("Update product error: %v", err)}PrintProducts(db)// 5. Delete value match given conditionsif err := db.Where("code = ?", "D42").Delete(&Product{}).Error; err != nil {log.Fatalf("Delete product error: %v", err)}PrintProducts(db)
}// List products
func PrintProducts(db *gorm.DB) {products := make([]*Product, 0)var count int64d := db.Where("code like ?", "%D%").Offset(0).Limit(2).Order("id desc").Find(&products).Offset(-1).Limit(-1).Count(&count)if d.Error != nil {log.Fatalf("List products error: %v", d.Error)}log.Printf("totalcount: %d", count)for _, product := range products {log.Printf("\tcode: %s, price: %d\n", product.Code, product.Price)}
}

一些 GORM 提示和注意事项

一些 GORM 提示和注意事项
参考URL: https://dev.to/daniel1in/some-gorm-tips-and-notes-3lm2

参考

官方文档:https://gorm.io/zh_CN/docs/index.html
30 | ORM:CURD 神器 GORM 包介绍及实战
https://time.geekbang.org/column/article/403351

http://www.dinnco.com/news/6675.html

相关文章:

  • 建动态网站教程seo网站运营
  • 山东省住房和城乡建设网站武汉百度推广入口
  • 中国证券监督管理委员会seo课程培训课程
  • 中石油网页设计与网站建设外链发布平台有哪些
  • 怎么建立免费的网站怎么做起泡胶
  • 三亚网站开发哪家好英文seo实战派
  • 5网站开发百度官网首页网址
  • 3合1网站建设全国疫情最新情况公布
  • 做网站的开发语言竞价服务托管公司
  • wordpress主题吧关键词优化价格表
  • 怎样做酒店网站ppt企业网站定制开发
  • 移动端app泰州seo平台
  • 上线了建站教程搜索引擎优化好做吗
  • 招商网站建设优势平台推广怎么做
  • 网站建设服务商 需要什么主机10条重大新闻事件
  • 网站模板登录模块公司推广宣传文案
  • 能力建设和继续教育中心网站北京网站优化经理
  • 做六合彩网站上海广告推广
  • 网站建站公司哪家好推广引流渠道
  • app制作公司十强seo关键词排名优化销售
  • 用自己的电脑做视频网站吗如何给自己的公司建网站
  • 自己做的网站设定背景图像产品推广的渠道有哪些
  • 广州制作外贸网站公司简介在线域名ip查询
  • 南京做网站好的公司搜索引擎营销怎么做
  • 网站标题优化工具获客渠道有哪些
  • 如何做游戏网站seo网站优化教程
  • 做视频网站收费侵权吗淘宝指数官网
  • 网站开发所需资料信息流广告接单平台
  • 做企业网站的意义拉新推广怎么找渠道
  • 如何做网站手机网站转让出售