Gorm 增删改查 (crud)
package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "log" "os" "time" ) type User struct { Id int64 Name string Age int32 Email string IsDeleted int8 } var db *gorm.DB func init() { dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local" newLogger := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: time.Second, Colorful: true, IgnoreRecordNotFoundError: false, ParameterizedQueries: true, LogLevel: logger.Info, }) // 全局sql log设置 DB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger}) if err != nil { fmt.Printf("mysql连接失败 %s\n", err) return } db = DB } // 条件分页查询 func GetPage(name string, pageNo, pageSize int64) []User { var users []User tx := db.Table("user").Select("id", "name", "age", "email").Offset(int((pageNo - 1) * pageSize)).Limit(int(pageSize)) if name != "" { tx.Where("name like CONCAT('%', ?, '%')", name) } tx.Find(&users) return users } // 查询单个 func GetOne(id int64) (User, error) { var user User db.Table("user").Select("id", "name", "age", "email").Where("id = ?", id).First(&user) return user, nil } // 查询多个 func GetList() ([]User, error) { var users []User db.Table("user").Select("id", "name", "age", "email").Limit(10).Find(&users) return users, nil } // 新增 func InsertOne(user User) error { db.Table("user").Create(&user) return nil } // 批量插入 func BatchInsert(users []User) error { //db.Table("user").Create(&users) db.Table("user").CreateInBatches(&users, 100) return nil } // 单个删除 func DeleteOne(id int64, name string) error { db.Table("user").Where("id = ? and name = ?", id, name).Delete(&User{}) return nil } func DeleteByName(name string) error { db.Table("user").Where("name = ?", name).Delete(&User{}) return nil } // update one func UpdateOne(id int64, name string) error { db.Table("user").Where("id = ?", id).Update("name", name) return nil } // 批量更新 func Updates(id1, id2 int64, name string) error { db.Table("user").Where("id in ?", []int64{id1, id2}).Updates(User{Name: name}) return nil } func main() { }
// 官方文档 https://gorm.io/zh_CN/docs/
分类:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通