package main
import (
"fmt"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/jinzhu/gorm"
"time"
)
var (
db *gorm.DB
err error
dbinfo string
)
const (
dbuser string = "root"
dbpassword = "123456"
dbip = "xxxxxxx"
dbport = "3306"
database = "users"
)
type User struct {
Id int
Name string `gorm:"type:varchar(30);not null;default:' ' "`
Password string
Birthday time.Time
Tel string `gorm:"column:phone"`
Addr string
Descs string
}
func init() {
dbinfo = fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",dbuser,dbpassword,dbip,dbport,database)
db,err = gorm.Open("mysql", dbinfo)
if err != nil {
fmt.Println("mysql打开失败",err)
return
}
db.AutoMigrate(&User{})
}
func (u *User) TableName() string {
return "user"
}
func NewUser(name ,password ,tel ,addr,desc string,birthday time.Time) *User{
return &User{
Name: name,
Password: password,
Birthday: birthday,
Tel: tel,
Addr: addr,
Descs: desc,
}
}
func main() {
db.LogMode(true)
user1 := User{}
user2 := User{}
db.First(&user1,"password = ?","b")
db.Last(&user2)
users := []User{}
db.Find(&users)
fmt.Println(user1,user2)
db.Where("id in (?)",[]int{1,4}).Find(&users)
fmt.Println(users)
db.Where("name = ? and password = ?","a","b").Find(&user1)
fmt.Println(user1)
db.Where("name = ? ","a").Where("password = ?","b").Find(&user1)
fmt.Println(user1)
var user3 User
db.Where("name = ? ","a").Not("phone","4").Find(&user3)
fmt.Println(user3)
var user4 []User
db.Where("name = ? ","c").Or("phone = ?","4").Find(&user4)
fmt.Println(user4)
var user5 []User
db.Select([]string{"name,phone"}).Find(&user5)
fmt.Println(user5)
var user6 []User
db.Order("name desc,id asc").Limit(2).Offset(5).Find(&user6)
fmt.Println(user6)
var count int
db.Model(&User{}).Count(&count)
fmt.Println(count)
var name ,password string
rows ,_ := db.Model(&User{}).Select("name,password").Rows()
for rows.Next(){
rows.Scan(&name,&password)
fmt.Println(name,password)
}
var cont,phone string
rows ,_ = db.Model(&User{}).Select("name ,phone,count(*)").Group("phone").Having("count(*) > ?",1).Rows()
for rows.Next(){
rows.Scan(&name,&phone,&cont)
fmt.Println(name,phone,cont)
}
var user7 User
err := db.First(&user7,"name = ?","a").Error
if err !=nil {
fmt.Println(err)
}
user7.Name = "dashabi"
err = db.Save(&user7).Error
if err != nil {
fmt.Println(err)
}
fmt.Println(user7)
err = db.Model(&User{}).Where("id >?",4).UpdateColumn("phone","aaaaa").Error
if err != nil {
fmt.Println(err)
}
err = db.Model(&User{}).Where("id >?",4).UpdateColumns(map[string]interface{}{"phone":"asdasdada","name":"woshihaoren"}).Error
if err != nil {
fmt.Println(err)
}
err = db.Model(&User{}).Where("id >?",4).Updates(&User{Tel: "aaa123"}).Error
if err != nil {
fmt.Println(err)
}
err = db.Model(&User{}).Where("id >?",4).Delete(&User{}).Error
if err != nil {
fmt.Println(err)
}
db.Delete(&User{Id: 2})
}