您的位置 首页 golang

beego ORM

学习⽬标

⼀、ORM介绍⼆、ORM优点三、ORM的使⽤四、ORM增删改查操作

⼀、ORM介绍(了解)1.ORM(Object Relational Mapping) 对象关系映射对象关联到数据表

对对象做操作的时候实际上是对数据表的操作

2.⽀持的数据库驱动mysql/sqlite3/postgresql⼆、ORM的优点1.⽀持golang语⾔的所有数据类型存储 如:字符串,整型,浮点型,布尔型等2.上⼿⽐较容易,采⽤的是CRUD⻛格 Create query Update Delete3.⾃动关联表 join One2One(⼀对⼀), One2Many(⼀对多),Many2Many(多对多)4.跨数据库兼容查询 数据库如:1712A 1712B5.直接使⽤原⽣SQL查询或映射6.ORM⽐较稳定和健壮

三、ORM的使⽤(掌握)1.安装ORM

1 go get github.com/astaxie/beego/orm

四、ORM增删改查操作演示

1.修改配置conf/app.confmysqluser = “root” //数据库账号mysqlpass = “root” //数据库密码mysqlurls = “127.0.0.1” //数据库主机地址IPmysqldb = “1712a” //使⽤的数据库mysqlport = “3306” //端⼝号

2. orm数据库配置 main.go

1 func init() {

2 //【数据库配置】开始

3 ​

4 mysqlurls := beego.AppConfig.String(“mysqlurls”)

5 mysqlport := beego.AppConfig.String(“mysqlport”)

6 mysqluser := beego.AppConfig.String(“mysqluser”)

7 mysqlpass := beego.AppConfig.String(“mysqlpass”)

8 mysqldb := beego.AppConfig.String(“mysqldb”)

9 conn := mysqluser + “:” + mysqlpass + “@tcp(” + mysqlurls + “:” + mysqlport + “)/” + mysqldb + “?charset=utf8”

10 orm.RegisterDataBase(“default”, “mysql”, conn)

11 //orm.RegisterDataBase(“default”, “mysql”, “root:root@tcp(127.0.0.1:3306)/1712a”)

12 //【数据库配置】结束

13 orm.RunSyncdb(“default”, false, true) //修改model字段⾃动同步数据表

14 ​

15 //【⽇志配置】开始

16 // log := logs.NewLogger(10000)

17 // log.SetLogger(“console”, `{“level”:1}`)

18 // log.EnableFuncCallDepth(true)

19 // log.SetLogger(“file”, `{“filename”:”logs/test.log”,”daily”:true}`)

20 //【⽇志配置】结束

21 }

3. 数据表创建

1 CREATE TABLE `person` (

2 `id` int(11) NOT NULL AUTO_INCREMENT,

3 `username` varchar(50) DEFAULT NULL,

4 `sex` varchar(260) DEFAULT NULL,

5 `email` varchar(260) DEFAULT NULL,

6 PRIMARY KEY (`id`)

7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.model定义models/person.go

1 package models

2 ​

3 import (

4 “github.com/astaxie/beego/orm”

5 )

6 ​

7 //由于model这个名字叫 Person 那么操作的表其实 person

8 type Person struct {

9 Id int

10 Username string

11 Sex string

12 Email string

13 }

14 ​

15 func init() {

16 // 需要在init中注册定义的model

17 orm.RegisterModel(new(Person))

18 }

19 ​

20 func AddUser(m *Person) (id int64, err error) {

21 o := orm.NewOrm()

22 id, err = o.Insert(m)

23 return

24 }

5.Controller控制器定义 controllers/PersonController.go

1 package controllers

2 ​

3 import (

4 “beestudy1/models”

5 “fmt”

6 “strconv”

7 ​

8 “github.com/astaxie/beego”

9 “github.com/astaxie/beego/orm”

10 _ “github.com/go-sql-driver/mysql”

11 )

12 ​

13 type PersonController struct {

14 beego.Controller

15 }

16 ​

17 //⽤户添加

18 func (c *PersonController) AddUser() {

19 o := orm.NewOrm()

20 var person models.Person

21 person.Username = c.GetString(“username”)

22 person.Email = c.GetString(“email”)

23 person.Sex = c.GetString(“sex”)

24 fmt.Println(person)

25 ​

26 id, err := o.Insert(&person)

27 if err == nil {

28 c.Data[“json”] = id

29 } else {

30 c.Data[“json”] = err.Error()

31 }

32 c.ServeJSON()

33 ​

34 }

35 ​

36 //单个⽤户查询

37 func (c *PersonController) GetOneUser() {

38 ​

39 idStr := c.Ctx.Input.Param(“:id”)

40 //c.Ctx.WriteString(idStr)

41 id, _ := strconv.Atoi(idStr)

42 ​

43 o := orm.NewOrm()

44 var person models.Person

45 person.Id = id

46 ​

47 if err := o.Read(&person); err == nil {

48 c.Data[“json”] = person

49 } else {

50 c.Data[“json”] = err.Error()

51 }

52 c.ServeJSON()

53 ​

54 }

55 ​

56 //⽤户列表查询

57 func (c *PersonController) UserList() {

58 ​

59 o := orm.NewOrm()

60 var lists []orm.ParamsList

61 num, err := o.Raw(“SELECT * FROM `person`”).ValuesList(&lists)

62 if err == nil && num > 0 {

63 c.Data[“json”] = lists

64 } else {

65 c.Data[“json”] = err.Error()

66 }

67 c.ServeJSON()

68 ​

69 }

70 ​

71 //单个⽤户更新

72 func (c *PersonController) UpdateUser() {

73 idStr := c.Ctx.Input.Param(“:id”)

74 id, _ := strconv.Atoi(idStr)

75 o := orm.NewOrm()

76 var person models.Person

77 person.Id = id

78 ​

79 if o.Read(&person) == nil {

80 person.Username = c.GetString(“username”)

81 if num, err := o.Update(&person); err == nil {

82 c.Data[“json”] = num

83 }

84 }

85 ​

86 c.ServeJSON()

87 ​

88 }

89 ​

90 //删除单个⽤户

91 func (c *PersonController) DeleteUser() {

92 ​

93 idStr := c.Ctx.Input.Param(“:id”)

94 id, _ := strconv.Atoi(idStr)

95 ​

96 o := orm.NewOrm()

97 var person models.Person

98 person.Id = id

99 ​

100 if num, err := o.Delete(&person); err == nil {

101 c.Data[“json”] = num

102 } else {

103 c.Data[“json”] = err.Error()

104 }

105 c.ServeJSON()

106 ​

107 }

6.路由定义 routes/router.go

1 package routers

2 ​

3 import (

4 “beestudy1/controllers”

5 ​

6 “github.com/astaxie/beego”

7 )

8 ​

9 func init() {

10 beego.Router(“/”, &controllers.MainController{})

11 beego.Router(“/hello”, &controllers.MainController{}, “get,post:Hello”)

12 ​

13 beego.Router(“/httplib”, &controllers.MainController{}, “get,post:HttplibStudy”)

14 beego.Router(“/context”, &controllers.MainController{}, “get,post:ContextStudy”)

15 ​

16 beego.Router(“/logtest”, &controllers.MainController{}, “get:Logtest”)

17 ​

18 /**

19 * ⽤户管理

20 */

21 //⽤户添加

22 beego.Router(“/adduser”, &controllers.PersonController{}, “post:AddUser”)

23 //取⼀条数据

24 beego.Router(“/getoneuser/:id”, &controllers.PersonController{}, “get:GetOneUser”)

25 //⽤户列表

26 beego.Router(“/userlist”, &controllers.PersonController{}, “get:UserList”)

27 //删除⼀条⽤户

28 beego.Router(“/deleteuser/:id”, &controllers.PersonController{}, “get:DeleteUser”)

29 ​

30 //更新⼀条⽤户

31 beego.Router(“/updateuser/:id”, &controllers.PersonController{}, “post:UpdateUser”)

32 ​

33 }

文章来源:智云一二三科技

文章标题:beego ORM

文章地址:https://www.zhihuclub.com/99481.shtml

关于作者: 智云科技

热门文章

网站地图