美文网首页三月听我说全端之路
beego从入门到弃坑( 四 )数据库连接以及构造器使用

beego从入门到弃坑( 四 )数据库连接以及构造器使用

作者: 三月孙记风 | 来源:发表于2019-01-20 16:43 被阅读1次

beego框架对数据库的链接,如果你只是把数据库连接写到配置文件里,是不起任何人作用的,对于用习惯了laravel框架的我来说是非常坑的一件事。
具体的链接只需要在入口文件添加

package main

import (
    _ "achievement/routers"
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func init() {
//设置日志文件
    beego.SetLogger("file", `{"filename":"logs/beego.log"}`)
//设置数据库的配制
    orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/ssms?charset=utf8")
    beego.BConfig.WebConfig.Session.SessionOn = true
}

func main() {
    beego.Run();
}

构造器

在beego文档对构造器的描述非常的少只有一个方法的描述,所以很多东西我们不得不一边看源码,一边尝试这些方法的作用。
源码中方法展示

type QueryBuilder interface {
    Select(fields ...string) QueryBuilder
    ForUpdate() QueryBuilder
    From(tables ...string) QueryBuilder
    InnerJoin(table string) QueryBuilder
    LeftJoin(table string) QueryBuilder
    RightJoin(table string) QueryBuilder
    
    Where(cond string) QueryBuilder
    And(cond string) QueryBuilder
    Or(cond string) QueryBuilder
    In(vals ...string) QueryBuilder
    OrderBy(fields ...string) QueryBuilder
    Asc() QueryBuilder
    Desc() QueryBuilder
    Limit(limit int) QueryBuilder
    Offset(offset int) QueryBuilder
    GroupBy(fields ...string) QueryBuilder
    Having(cond string) QueryBuilder
    Update(tables ...string) QueryBuilder
    Set(kv ...string) QueryBuilder
    Delete(tables ...string) QueryBuilder
    InsertInto(table string, fields ...string) QueryBuilder
    Values(vals ...string) QueryBuilder
    Subquery(sub string, alias string) string
    String() string
}

查询语句

func (u *User)LoginJudge(account string,password string)  []User {
    var users []User
    qb,_:=orm.NewQueryBuilder("mysql")
    // 构建查询对象
    qb.Select("user.account").
        From("user").
        Where("account = ?").
        And("password = ?").And("type != 2")
    //返回sql语句
    sql := qb.String()
    // 执行 SQL 语句
    o := orm.NewOrm()
    o.Raw(sql,account,password).QueryRows(&users)
    return users
}

beego的查询语句可以根据条件拼接

//查询学生的成绩
func (this *Score)SelectAll(page,limit, class int,school string) []ScoreInformation {
    var score []ScoreInformation
    page = (page-1)*10
    qb,_ := orm.NewQueryBuilder("mysql")
    qb.Select("student.number","student.name","student.sex","clazz.clazz_name","grade.grade_name","escore.score","course.name as course_name","exam.exam_name","exam.time").
        From("student,clazz,grade,escore,course,exam").
        Where("student.clazzid = clazz.id").
        And("student.gradeid = grade.id").
        And("student.id = escore.studentid").
        And("escore.courseid = course.id").
        And("exam.id = escore.examid")

    if class != -1 {
        qb.And("clazz.id = "+strconv.Itoa(class))
    }
    if school != ""{
        qb.And("student.number = "+school)
    }
    qb.Limit(limit).
        Offset(page)
    sql := qb.String()
    fmt.Println(sql)
    o := orm.NewOrm()
    _,error:=o.Raw(sql).QueryRows(&score)
    fmt.Println(error)
    fmt.Println(score)
    return score
}

插入语句

func (u *User)AddMenager(account,password,name string) error  {
    qb,_:=orm.NewQueryBuilder("mysql")
    // 构建查询对象
    qb.InsertInto("user","user.account","user.password","user.name","user.type").
        Values("?","?","?","?")
    //返回sql语句
    sql := qb.String()
    fmt.Println(sql)
    // 执行 SQL 语句
    o := orm.NewOrm()
    _,error := o.Raw(sql,account,password,name,3).Exec()
    return error
}

删除语句

func (u *User)DeleteMenagerConut(id int) error  {
    qb,_:=orm.NewQueryBuilder("mysql")
    // 构建查询对象
    qb.Delete("user").
        From("user").
        Where("id = ?")
    //返回sql语句
    sql := qb.String()
    fmt.Println(sql)
    // 执行 SQL 语句
    o := orm.NewOrm()
    _,error := o.Raw(sql,id).Exec()
    return error
}

在构造其如果有那些方法不知道是什么意思可以将sql := qb.String()用fmt.Println()打印出来来查看具体的sql语句或许就会知道哪里有问题了
近期会将改版本改进一下主要是对方法的封装,以及对一些写的不合理的地方的修改,以及添加一些的新的功能,并且会将注释加的详细一点,希望能给和我一样的小白提供一些便利
完整版
访问方式https://github.com/dajumao/achievement

相关文章

  • beego从入门到弃坑( 四 )数据库连接以及构造器使用

    beego框架对数据库的链接,如果你只是把数据库连接写到配置文件里,是不起任何人作用的,对于用习惯了laravel...

  • beego从入门到弃坑(一)

    最近由于要写课程设计的原因,我便开始一边学习beego,一边开始用它写一个小型的管理系统。但是只有你真正的去用的时...

  • beego从入门到弃坑( 二 )登录

    从这一节开始我们将一点一点的从基础开始带大家写一个项目,如果其中有任何错误地方希望能得到大家指点,可以将你们意见写...

  • beego从入门到弃坑( 三 )登录

    在上一节中我带领小伙伴们完成了一个简单的登录,在这一节我们继续对这个登录做一下完善,我们需要在controller...

  • laravel温故

    数据库 快速入门 查询构造器 分页 数据库迁移 laravel数据填充 laravel的Redis使用 使用red...

  • 日常活动表格

    来源:攻抗战死灰粉带你从入门到弃坑

  • thinkphp5学习笔记(五)数据库与模型

    连接与查询构造器 数据库连接配置 数据库原生查询 查询构造器 1.查询构造器的原理: 2.什么是链式操作?为什么要...

  • Laravel框架基础学习

    1.路由设置 路由和控制器绑定。 视图 - 使用模板 Model - 模型 连接数据库 数据库操作 - 查询构造器...

  • grok从入门到弃坑

    初次使用是在使用logstash时用来分割反向代理的日志,由单个简单的正则组合,就能对一大段文字进行切割,惊叹与简...

  • electron从入门到弃坑

    科学梯子自备 electron的安装 资料地址:https://github.com/electron/elect...

网友评论

    本文标题:beego从入门到弃坑( 四 )数据库连接以及构造器使用

    本文链接:https://www.haomeiwen.com/subject/ravxjqtx.html