derive.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/go-xorm/xorm"
  6. _ "github.com/mattn/go-sqlite3"
  7. )
  8. type User struct {
  9. Id int64
  10. Name string
  11. }
  12. type LoginInfo struct {
  13. Id int64
  14. IP string
  15. UserId int64
  16. }
  17. type LoginInfo1 struct {
  18. LoginInfo `xorm:"extends"`
  19. UserName string
  20. }
  21. func main() {
  22. f := "derive.db"
  23. os.Remove(f)
  24. Orm, err := xorm.NewEngine("sqlite3", f)
  25. if err != nil {
  26. fmt.Println(err)
  27. return
  28. }
  29. defer Orm.Close()
  30. Orm.ShowSQL = true
  31. err = Orm.CreateTables(&User{}, &LoginInfo{})
  32. if err != nil {
  33. fmt.Println(err)
  34. return
  35. }
  36. _, err = Orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1})
  37. if err != nil {
  38. fmt.Println(err)
  39. return
  40. }
  41. info := LoginInfo{}
  42. _, err = Orm.Id(1).Get(&info)
  43. if err != nil {
  44. fmt.Println(err)
  45. return
  46. }
  47. fmt.Println(info)
  48. infos := make([]LoginInfo1, 0)
  49. err = Orm.Sql(`select *, (select name from user where id = login_info.user_id) as user_name from
  50. login_info limit 10`).Find(&infos)
  51. if err != nil {
  52. fmt.Println(err)
  53. return
  54. }
  55. fmt.Println(infos)
  56. }