main.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net/url"
  6. "os"
  7. log "github.com/sirupsen/logrus"
  8. log2 "log"
  9. "time"
  10. "gorm.io/driver/mysql"
  11. "gorm.io/gorm"
  12. "gorm.io/gorm/logger"
  13. "gorm.io/gorm/schema"
  14. )
  15. var dsn string
  16. func main() {
  17. flag.StringVar(&dsn, "dsn", "root:rootPassword@tcp(192.168.150.40:23306)/core", "mysql dsn")
  18. // 连接数据库
  19. newLogger := logger.New(
  20. log2.New(os.Stdout, "\r\n", log2.LstdFlags), // io writer
  21. logger.Config{
  22. SlowThreshold: time.Second, // 慢 SQL 阈值
  23. LogLevel: logger.Silent, // Log level
  24. Colorful: false, // 禁用彩色打印
  25. },
  26. )
  27. dsn := fmt.Sprintf("%s?charset=utf8&parseTime=True&loc=Local&time_zone=%s", dsn, url.QueryEscape("'UTC'"))
  28. mysqlDb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: newLogger, NamingStrategy: schema.NamingStrategy{
  29. TablePrefix: "t_", // 表前缀
  30. SingularTable: false, // 复数形式
  31. }},
  32. )
  33. if err != nil {
  34. log.Fatal("init mysql db failed, err: ", err.Error())
  35. }
  36. var users []User
  37. err = mysqlDb.Debug().Model(User{}).Omit("user_name", "password", "email").Find(&users).Error
  38. if err != nil {
  39. log.Fatal("err: ", err.Error())
  40. }
  41. fmt.Println(len(users))
  42. err = mysqlDb.Debug().Model(User{}).Omit("t_users.user_name", "t_users.password", "t_users.email").Find(&users).Error
  43. if err != nil {
  44. log.Fatal("err: ", err.Error())
  45. }
  46. fmt.Println(len(users))
  47. }
  48. type User struct {
  49. Id uint `gorm:"primarykey"`
  50. UserName string `gorm:"column:user_name;type:varchar(20);comment:用户名;NOT NULL" json:"user_name"`
  51. Password string `gorm:"column:password;type:char(40);comment:登录密码(SHA1( MD5 (明文密码) + 盐值);NOT NULL" json:"password"`
  52. PhoneNumber string `gorm:"column:phone_number;type:varchar(20);comment:手机号;NOT NULL" json:"phone_number"`
  53. Email string `gorm:"column:email;type:varchar(64);comment:电子邮箱;NOT NULL" json:"email"`
  54. }