go框架三件套
第一件 Gorm
一些默认: 1.gorm使用ID字段作为主键
2.使用结构体,蛇形负数作为表名
3.字段名为蛇形作为列名
4.使用CreateAt,UpdateAt字段作为创建,更新时间
gorm支持mysql,sqlsever等多种主流的数据库
gorm中使用结构体当作数据库字段,并且使用,例如(product表,里面有code,price两个字段),后面可以加tag
注意字段名使用蛇形,例如:ProduceId
type Product struct {
Code string
Price uint
Code string `gorm:"column:code"`
}
使用 model 定义表名,例如(表名为product)
func (p Product) TableName() string {
return "producr"
}
使用下列语句链接数据库
db,err := gorm.Open(
mysql.Open(user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=true&loc=Local"),
&gore.Config{})
创建数据使用db.Create
db.create(&Product{Code:"D42",Price:100}}
查询数据有两种方式,为db.First和db.Find
更建议使用find,因为失败会返回空数组而非报错,防止程序重新启动(大概吧),更多使用.where().find来查询数据
db.First(&Product,1)
db.First(&Product,"code = ?,"D42")
其中第一种方法为根据整形主键查找,第二种为查找code字段对应为D42的记录
更新数据使用update,其中有两种更新方式,一种是使用db.Model(&数据表名).Update更新一条数据,第二种是使用db.Updates更新多条数据,但是要注意,db.Updates使用结构的方式更新数据时只能更新非零值,如果想要更新零值,需要用map插入(方法三)
db.Model(&product).Update("Price",200)
db.Model(&product).Updates(Product{Price:200,Code:"F42"})
db.Model(&product).Updates(map[string]interface{}{"Price":200,"Code":"F42"})
删除数据使用delete,方法和查询差不多,有两种删除方式,主键和查询,这里就不过多详细去写,除此之外还有一个软删除,软删除的意思为把创建时间设置为一个不存在的时间让用户无法通过正常的手段查询到数据
DeleteAt为软删除,可以使用Unscoped找到
自己的总结:gorm相比于spring boot其实差的不是很多,现在实习的公司见到我写代码第一句话就是现在的小孩都不怎么会写sql文了,而现在的框架也都在弱化sql文,用封装来实现曾经晦涩难懂且很长的sql文。我在实习公司接触的第一个项目使用的是15年的老框架,框架中大量sql文的使用和插入速度低下,和现在框架去比也确实比不过了