请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 2227|回复: 4

Beego学习(四)orm+mysql

[复制链接]

17

主题

25

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2020-1-27 12:45:21 | 显示全部楼层 |阅读模式
文章目录


安装orm
  1. go get github.com/astaxie/beego/orm//添加引用_ "github.com/go-sql-driver/mysql"
复制代码
简单例子

连接数据库
  1. import (        "github.com/astaxie/beego/orm"        _ "github.com/go-sql-driver/mysql")func RegistMysql() {        orm.RegisterDataBase("default", "mysql", "root:123@tcp(127.0.0.1:3306)/wdvideo?charset=utf8")        //beego和数据库对应格式         //如UserInfo->user_info   User_Info->user__info  DB_UserInfo->d_b__user_info         orm.RegisterModel(new(UserInfo))}
复制代码
在/test/user  路由添加post方法,将用户信息添加到数据库
  1. func (c *UserInfoController) Post() {        user := new(models.UserInfo)        if err := c.ParseForm(user); err != nil {                c.Ctx.Output.SetStatus(405)                c.Abort("参数错误")        }        o := orm.NewOrm()        id, err := o.Insert(user)        if err != nil {                fmt.Println(err)                c.Ctx.Output.SetStatus(500)                c.Abort("服务器错误")        }        fmt.Println(user.UserName)        c.Ctx.WriteString(fmt.Sprintf("用户注册成功,id:%d", id))}
复制代码
增删改查

“:queue”  是我们设置的url路径,根据路径实现增删改查
  1. func (c *UserInfoController) Post() {        // switch c.Ctx.Input.Param(":queue") {        switch c.GetString(":queue") {        case "insert":                user := new(models.UserInfo)                if err := c.ParseForm(user); err != nil {                        c.Ctx.Output.SetStatus(405)                        c.Abort("参数错误")                        return                }                o := orm.NewOrm()                id, err := o.Insert(user)                if err != nil {                        fmt.Println(err)                        c.Ctx.Output.SetStatus(500)                        c.Abort("服务器错误")                        return                }                c.Ctx.WriteString(fmt.Sprintf("用户注册成功,id:%d", id))        case "update":                user := new(models.UserInfo)                if err := c.ParseForm(user); err != nil {                        c.Ctx.Output.SetStatus(405)                        c.Abort("参数错误")                        return                }                o := orm.NewOrm()                _, err := o.Update(user, "UserName", "PassWord")                if err != nil {                        fmt.Println(err)                        c.Ctx.Output.SetStatus(500)                        c.Abort("服务器错误")                        return                }                c.Ctx.WriteString(fmt.Sprintf("用户修改成功,id:%d--用户名:%s---密码:%s", user.Id, user.UserName, user.PassWord))        case "delete":                user := new(models.UserInfo)                o := orm.NewOrm()                if id, err := c.GetInt64("Id"); err == nil {                        user.Id = id                        if _, err := o.Delete(user, "Id"); err != nil {                                c.Ctx.Output.SetStatus(500)                                c.Abort("服务器错误")                                return                        }                        c.Ctx.WriteString(fmt.Sprintf("用户删除成功,id:%d", user.Id))                } else {                        fmt.Println(err)                        c.Ctx.Output.SetStatus(403)                        c.Abort("参数id错误")                }        case "select":                user := new(models.UserInfo)                if id, err := c.GetInt("Id"); err != nil {                        fmt.Println(err)                        c.Ctx.Output.SetStatus(403)                        c.Abort("参数id错误")                        return                } else {                        user.Id = int64(id)                }                o := orm.NewOrm()                if err := o.Read(user, "ID"); err != nil {                        c.Ctx.Output.SetStatus(404)                        c.Abort("id 未找到")                        return                }                c.Ctx.WriteString(fmt.Sprintf("用户查找成功,id:%d--用户名:%s---密码:%s", user.Id, user.UserName, user.PassWord))        default:                c.Ctx.Output.SetStatus(404)                c.Abort("url未找到")        }}
复制代码
简单事务

主要用到这三个函数,很简单,不细说
  1. o.Begin()o.Commit()o.Rollback()
复制代码
QueryBuilder

QueryBuilder是一种预处理方式的sql查询,通过追加方式使用,有效防止笔误。
方法如下
  1. func (c *UserInfoController) Get() {        o := orm.NewOrm()        qb, _ := orm.NewQueryBuilder("mysql")        sqlquery := qb.Select("*").From("user_info").Where("id > ?").OrderBy("id").Desc().Limit(3)        users := make([]models.UserInfo, 0)        if _, err := o.Raw(sqlquery.String(), 3).QueryRows(&users); err != nil {                fmt.Println(err)        }        c.Ctx.WriteString(fmt.Sprint("select result is : %v", users))}
复制代码
但,恕在下直言,还不如直接raw方法写sql语句来的痛快。
                                                                                                                                       
                                                    
  • 点赞                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        Dual BSD/GPL                                                                发布了53 篇原创文章 · 获赞 5 · 访问量 2429                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:模型类多表操作;中间件使用
下一篇:MySQL(InnoDB剖析):03---MySQL的连接与通信方式(进程间通信(管道、套接字
回复

使用道具 举报

0

主题

24

帖子

514

积分

高级会员

Rank: 4

积分
514
发表于 2020-1-28 18:15:04 | 显示全部楼层
这个帖子不回对不起自己![www.12360.co]
回复

使用道具 举报

0

主题

24

帖子

514

积分

高级会员

Rank: 4

积分
514
发表于 2020-2-3 01:27:44 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵![www.12360.co]
回复

使用道具 举报

0

主题

24

帖子

514

积分

高级会员

Rank: 4

积分
514
发表于 2020-2-6 12:03:01 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

16

帖子

346

积分

中级会员

Rank: 3Rank: 3

积分
346
发表于 6 天前 | 显示全部楼层
感谢楼主的无私分享![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 21:21 , Processed in 0.115047 second(s), 26 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表