Advertisement
Guest User

Untitled

a guest
Feb 20th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "log"
  6. "time"
  7.  
  8. "github.com/astaxie/beego/orm"
  9. _ "github.com/go-sql-driver/mysql"
  10. )
  11.  
  12. type User struct {
  13. ID int
  14. Name string `orm:"size(100)"`
  15. Profile *Profile `orm:"rel(one)"` // OneToOne relation
  16. }
  17.  
  18. type Profile struct {
  19. ID int
  20. Age int16
  21. User *User `orm:"reverse(one)"` // Reverse relationship
  22. }
  23.  
  24. const (
  25. dbAlias = "default"
  26. mysqlUser = "root"
  27. mysqlPassword = "root"
  28. mysqlHost = "localhost"
  29. mysqlPort = 3306
  30. mysqlDatabase = "test"
  31. mysqlCharset = "utf8"
  32. )
  33.  
  34. var (
  35. mysqlCon = fmt.Sprintf(
  36. "%s:%s@tcp(%s:%d)/%s?charset=%s",
  37. mysqlUser,
  38. mysqlPassword,
  39. mysqlHost,
  40. mysqlPort,
  41. mysqlDatabase,
  42. mysqlCharset,
  43. )
  44. )
  45.  
  46. func init() {
  47. // register driver
  48. orm.RegisterDriver("mysql", orm.DRMySQL)
  49.  
  50. // register model
  51. orm.RegisterModel(new(User), new(Profile))
  52.  
  53. // set timezone
  54. orm.DefaultTimeLoc = time.UTC
  55.  
  56. // set default database
  57. orm.RegisterDataBase(dbAlias, "mysql", mysqlCon)
  58. }
  59.  
  60. func main() {
  61. // Print SQL
  62. orm.Debug = true
  63.  
  64. force := true // Drop table and re-create.
  65. verbose := true // Print log
  66. // generate Tables
  67. if err := orm.RunSyncdb(dbAlias, force, verbose); err != nil {
  68. log.Println(err)
  69. }
  70.  
  71. o := orm.NewOrm()
  72. o.Using("default")
  73.  
  74. profileA := new(Profile)
  75. profileA.Age = 30
  76.  
  77. profileB := new(Profile)
  78. profileB.Age = 40
  79.  
  80. profileC := new(Profile)
  81. profileC.Age = 50
  82.  
  83. profiles := []*Profile{profileB, profileC}
  84.  
  85. user := new(User)
  86. user.Profile = profileA
  87. user.Name = "alpha"
  88.  
  89. var res int64
  90. var err error
  91.  
  92. // Insert
  93. if res, err = o.Insert(profileA); err != nil {
  94. log.Println(err)
  95. }
  96. log.Printf("inserted: %d row", res)
  97.  
  98. if res, err = o.InsertMulti(10, profiles); err != nil {
  99. log.Println(err)
  100. }
  101. log.Printf("inserted: %d row", res)
  102.  
  103. if res, err = o.Insert(user); err != nil {
  104. log.Println(err)
  105. }
  106. log.Printf("inserted: %d row", res)
  107.  
  108. // Update
  109. updateTarget := User{ID: 1}
  110. if o.Read(&updateTarget) == nil {
  111. updateTarget.Name = "ALPHA"
  112. if num, err := o.Update(&updateTarget); err != nil {
  113. log.Println(err)
  114. } else {
  115. log.Printf("updated %d rows", num)
  116. }
  117. }
  118.  
  119. // Read
  120. readTarget := User{ID: 1}
  121. err = o.Read(&readTarget)
  122. if err == orm.ErrNoRows {
  123. log.Println("No result found.")
  124. } else if err == orm.ErrMissPK {
  125. log.Println("No primary key found.")
  126. } else {
  127. log.Println(readTarget.ID, readTarget.Name)
  128. }
  129.  
  130. // Raw Query
  131. var params []orm.Params
  132. num, err := o.Raw("SELECT * FROM profile WHERE age > ?", 30).Values(&params)
  133. if err != nil {
  134. log.Println(err)
  135. }
  136. log.Printf("selectd %d rows", num)
  137. if num > 0 {
  138. log.Printf("result %v", params)
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement