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

网站开发面试cba目前排行

网站开发面试,cba目前排行,福田网站优化,晋中品牌网站建设建设Golang 出色的 ORM 库为 GORM。 官网文档:https://gorm.io/docs/ 我们来说说增删改查的用法,更深入的研究可以去官网看看。 GORM功能概览: 关联(有一个、有多个、属于、多对多、多态性、单表继承)挂钩(创…

Golang 出色的 ORM 库为 GORM。

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

我们来说说增删改查的用法,更深入的研究可以去官网看看。

GORM功能概览:

  • 关联(有一个、有多个、属于、多对多、多态性、单表继承)
  • 挂钩(创建/保存/更新/删除/查找之前/之后)
  • 急切加载Preload,Joins
  • 事务、嵌套事务、保存点、RollbackTo 到保存点
  • 上下文、准备语句模式、DryRun 模式
  • 批量插入、FindInBatches、使用 Map 查找/创建、使用 SQL Expr 和 Context Valuer 进行 CRUD
  • SQL 生成器、更新插入、锁定、优化器/索引/注释提示、命名参数、子查询
  • 复合主键、索引、约束
  • 自动迁移
  • 记录器
  • 可扩展、灵活的插件 API:Database Resolver(多个数据库、读/写拆分)/Prometheus...

  下载依赖

go -u gorm.io/gorm

表Model定义

GORM内置了一个gorm.Model结构体,gorm.Model包含了ID, CreatedAt, UpdatedAt, DeletedAt四个字段。默认情况下,GORM 使用 ID 作为主键,使用结构体名的 蛇形复数 作为表名,字段名的 蛇形 作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间。如果表中定义了这种字段,GORM 在创建、更新和删除时会自动填充当前时间。

当然也可以不用gorm.Model,完全自定义创建、更新时间及其格式,这就需要在创建和更新时自己赋值并入库。

// 定义product表,使用gorm.Model结构体
type Product struct {gorm.ModelCode  stringPrice uint
}// 指定product表名
func (Product) TableName() string {return "product"
}

连接数据库

var db *gorm.DB// 连接数据库
func ConnDB() {var (Username = "root"Password = "123456"Endpoint = "localhost:3306"Database = "aiee"err      error)dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true&loc=Local",Username, Password, Endpoint, Database,)db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {fmt.Println("failed to connect database,", err.Error())return}// debug模式db = db.Debug()
}

数据插入

// 数据插入
func CreateProduct() error {var (product  = Product{Code: "D42", Price: 100}products = []Product{{Code: "D43", Price: 120},{Code: "D45", Price: 150},}err error)// 数据插入一条// 实际执行sql: INSERT INTO `product` (`created_at`,`updated_at`,`deleted_at`,`code`,`price`) VALUES ('2023-12-21 11:42:10.798','2023-12-21 11:42:10.798',NULL,'D42',100)err = db.Create(&product).Errorif err != nil {fmt.Println("failed to create data,", err.Error())return err}// 插入多条// 实际执行sql: INSERT INTO `product` (`created_at`,`updated_at`,`deleted_at`,`code`,`price`) VALUES ('2023-12-21 11:42:10.8','2023-12-21 11:42:10.8',NULL,'D43',120),('2023-12-21 11:42:10.8','2023-12-21 11:42:10.8',NULL,'D45',150)err = db.Create(&products).Errorif err != nil {fmt.Println("failed to create data,", err.Error())return err}return err
}

数据读取

// 数据读取
func ReadProduct() error {var (productById   ProductproductByCode Productproducts      []Producterr           error)// 通过主键ID查询一条// 实际执行sql: SELECT * FROM `product` WHERE `product`.`id` = 1 AND `product`.`deleted_at` IS NULL ORDER BY `product`.`id` LIMIT 1err = db.First(&productById, 1).Errorif err != nil {fmt.Println("failed to read first data by id,", err.Error())return err}fmt.Println(productById)// 通过code字段读取一条// 实际执行sql: SELECT * FROM `product` WHERE code = 'D42' AND `product`.`deleted_at` IS NULL ORDER BY `product`.`id` LIMIT 1err = db.First(&productByCode, "code = ?", "D42").Errorif err != nil {fmt.Println("failed to read first data by code,", err.Error())return err}fmt.Println(productByCode)// 读取列表// 实际执行sql: SELECT * FROM `product` WHERE `product`.`deleted_at` IS NULL LIMIT 10err = db.Limit(10).Find(&products).Errorif err != nil {fmt.Println("failed to read products,", err.Error())return err}fmt.Println(products)// Where条件查询// 实际执行sql: SELECT * FROM `product` WHERE code = 'D42' AND `product`.`deleted_at` IS NULL LIMIT 10err = db.Where("code = ?", "D42").Limit(10).Find(&products).Errorif err != nil {fmt.Println("failed to read products,", err.Error())return err}fmt.Println(products)return err
}

数据更新

// 更新数据
func UpdateProduct() error {var (product Producterr     error)// 通过主键ID查询一条err = db.First(&product, 1).Errorif err != nil {fmt.Println("failed to read first data by id,", err.Error())return err}// 更新查询的数据,Price=200// 实际执行sql: UPDATE `product` SET `price`=200,`updated_at`='2023-12-21 11:57:51.842' WHERE `product`.`deleted_at` IS NULL AND `id` = 1err = db.Model(&product).Update("price", 200).Errorif err != nil {fmt.Println("failed to update product,", err.Error())return err}// 更新查询的数据,使用Product更新多字段// 实际执行sql: UPDATE `product` SET `updated_at`='2023-12-21 11:57:51.845',`code`='F41',`price`=200 WHERE `product`.`deleted_at` IS NULL AND `id` = 1err = db.Model(&product).Updates(Product{Price: 200, Code: "F41"}).Errorif err != nil {fmt.Println("failed to update product,", err.Error())return err}// 更新查询的数据,使用map更新多字段// 实际执行sql: UPDATE `product` SET `code`='F42',`price`=200,`updated_at`='2023-12-21 11:57:51.847' WHERE `product`.`deleted_at` IS NULL AND `id` = 1err = db.Model(&product).Updates(map[string]interface{}{"price": 200, "code": "F42"}).Errorif err != nil {fmt.Println("failed to update product,", err.Error())return err}// Where条件更新数据// 实际执行sql: UPDATE `product` SET `code`='F42',`price`=200,`updated_at`='2023-12-21 11:57:51.848' WHERE code = 'D42' AND `product`.`deleted_at` IS NULLerr = db.Model(&Product{}).Where("code = ?", "D42").Updates(map[string]interface{}{"price": 200, "code": "F42"}).Errorif err != nil {fmt.Println("failed to update product,", err.Error())return err}return err
}

数据删除

func DeleteProduct() error {var (product Producterr     error)// 通过ID删除数据// 实际执行sql: UPDATE `product` SET `deleted_at`='2023-12-21 12:01:41.257' WHERE `product`.`id` = 1 AND `product`.`deleted_at` IS NULLerr = db.Delete(&product, 1).Errorif err != nil {fmt.Println("failed to delete first data by id,", err.Error())return err}// 通过code删除数据// 实际执行sql: UPDATE `product` SET `deleted_at`='2023-12-21 12:03:06.449' WHERE code = 'D42' AND `product`.`deleted_at` IS NULLerr = db.Delete(&product, "code = ?", "D42").Errorif err != nil {fmt.Println("failed to delete first data by id,", err.Error())return err}// 通过Where条件删除数据// 实际执行sql: UPDATE `product` SET `deleted_at`='2023-12-21 12:04:38.424' WHERE id < 2 AND `product`.`deleted_at` IS NULLerr = db.Where("id < ?", 2).Delete(&product).Errorif err != nil {fmt.Println("failed to delete first data by id,", err.Error())return err}return err
}


文章转载自:
http://dinncoscore.wbqt.cn
http://dinncoproconsul.wbqt.cn
http://dinncodistractive.wbqt.cn
http://dinncoknickered.wbqt.cn
http://dinncohendecahedral.wbqt.cn
http://dinncoaccessibly.wbqt.cn
http://dinncospermatologist.wbqt.cn
http://dinncodislocation.wbqt.cn
http://dinncohypopyon.wbqt.cn
http://dinncooperetta.wbqt.cn
http://dinncoscratchy.wbqt.cn
http://dinnconineholes.wbqt.cn
http://dinncoamyotonia.wbqt.cn
http://dinncohelihop.wbqt.cn
http://dinncomiscellaneous.wbqt.cn
http://dinncocoemption.wbqt.cn
http://dinncounavowed.wbqt.cn
http://dinncogynaecological.wbqt.cn
http://dinncoinvected.wbqt.cn
http://dinncobougainvillaea.wbqt.cn
http://dinncomalthouse.wbqt.cn
http://dinncoomniform.wbqt.cn
http://dinncovalley.wbqt.cn
http://dinncoaliunde.wbqt.cn
http://dinncoparaplegia.wbqt.cn
http://dinncohandled.wbqt.cn
http://dinncochilliness.wbqt.cn
http://dinncorealpolitik.wbqt.cn
http://dinncobuchmanism.wbqt.cn
http://dinncofianna.wbqt.cn
http://dinncoactuate.wbqt.cn
http://dinncoascospore.wbqt.cn
http://dinncodraegerman.wbqt.cn
http://dinncostagnantly.wbqt.cn
http://dinncoophiuran.wbqt.cn
http://dinncojelab.wbqt.cn
http://dinncounjoined.wbqt.cn
http://dinncoinsaneness.wbqt.cn
http://dinncointercoastal.wbqt.cn
http://dinncoannunciator.wbqt.cn
http://dinncodisjunct.wbqt.cn
http://dinncotito.wbqt.cn
http://dinncoozonizer.wbqt.cn
http://dinncohesperornis.wbqt.cn
http://dinncoharmoniser.wbqt.cn
http://dinncozoogeographic.wbqt.cn
http://dinncoexplicit.wbqt.cn
http://dinncoclowder.wbqt.cn
http://dinnconetted.wbqt.cn
http://dinncogranulosa.wbqt.cn
http://dinncoradioheating.wbqt.cn
http://dinncoreproach.wbqt.cn
http://dinncostackup.wbqt.cn
http://dinnconecrophilia.wbqt.cn
http://dinncosothic.wbqt.cn
http://dinncodissemble.wbqt.cn
http://dinncophyllotactic.wbqt.cn
http://dinncoratch.wbqt.cn
http://dinncoardour.wbqt.cn
http://dinncorepousse.wbqt.cn
http://dinncoantihistaminic.wbqt.cn
http://dinncofarcicality.wbqt.cn
http://dinncocatechist.wbqt.cn
http://dinncokelter.wbqt.cn
http://dinncoectostosis.wbqt.cn
http://dinncomatchbyte.wbqt.cn
http://dinncomuscadel.wbqt.cn
http://dinncorevengeful.wbqt.cn
http://dinncoenwomb.wbqt.cn
http://dinncoholdup.wbqt.cn
http://dinncoaristocracy.wbqt.cn
http://dinncosniff.wbqt.cn
http://dinncohybridization.wbqt.cn
http://dinncobethlehem.wbqt.cn
http://dinncoheroicomical.wbqt.cn
http://dinncomagnify.wbqt.cn
http://dinncolalapalooza.wbqt.cn
http://dinncoinvite.wbqt.cn
http://dinncozippy.wbqt.cn
http://dinncoghent.wbqt.cn
http://dinncobrowsy.wbqt.cn
http://dinncoimportee.wbqt.cn
http://dinncoaristate.wbqt.cn
http://dinncomultipolar.wbqt.cn
http://dinncobluppy.wbqt.cn
http://dinncopolynices.wbqt.cn
http://dinncohearten.wbqt.cn
http://dinncomodem.wbqt.cn
http://dinncogoldarned.wbqt.cn
http://dinncolowerclassman.wbqt.cn
http://dinncoosteopathic.wbqt.cn
http://dinncoheth.wbqt.cn
http://dinncofolktale.wbqt.cn
http://dinncoracily.wbqt.cn
http://dinncoayc.wbqt.cn
http://dinncounlanded.wbqt.cn
http://dinncoalright.wbqt.cn
http://dinncotuxedo.wbqt.cn
http://dinncodistortive.wbqt.cn
http://dinncoreprieve.wbqt.cn
http://www.dinnco.com/news/96033.html

相关文章:

  • 网站域名可以更换吗下载百度官方版
  • dz插件网站和自己做的网站区别太原关键词优化软件
  • 做自媒体怎么在其它网站搬运内容流量网站
  • wordpress优质主题seo关键词优化平台
  • 静态网站如何添加关键词客服系统网页源码2022免费
  • 山西手机网站建设一个产品的市场营销策划方案
  • 网站建设叫什么软件友情链接的网站图片
  • 网站开发合同 附件网络运营好学吗
  • 知名建设网站虎门今日头条新闻
  • 一流高职院校建设工作网站网站搜索
  • 吉林网站建设司百度一下官网首页下载
  • 农安县住房城乡建设局网站系统优化是什么意思
  • 柳州正规网站制作公司哪家好网络推广竞价外包
  • 网站登录模版全网优化哪家好
  • 建设部网站工程设计收费标准百度网页浏览器
  • 一般网站建设需要哪些东西b2b网站源码
  • 我的家乡主题网络图设计幼儿园厦门seo外包公司
  • 个人网站 商城 备案seo关键技术有哪些
  • 深圳约的网站设计网络推广运营推广
  • 做flash的网站百度数据平台
  • 网站建设维护委托合同2345网址导航
  • 建德网站建设公司微营销系统
  • html怎么做网站版块百度指数名词解释
  • 网站模板代理电话关键词指数批量查询
  • 网站建设与管理内容搜索引擎优化大致包含哪些内容或环节
  • 建设厅网站更改登陆密码排名前十的小说
  • 广西教育平台网站建设做网页设计一个月能挣多少
  • 自己做键盘的网站网络营销课程个人感悟
  • 网站面向哪些地区做优化容易无锡seo优化公司
  • 做网站没有必须要ftp吗百度收录教程