orm使用

用户结构体,和订单是一对多的关系

type User struct {
    Id int //beego中默认Id为主键,且自增长
    Name string //姓名
    Age int //年龄
    Nickname string  //昵称
    Userorders []*Userorder `orm:"reverse(many)"`
}

订单结构体,和用户是多对多一的关系

type Userorder struct {
    Id int
    Orderdata string
    User *User `orm:"rel(fk)"`
    Products []*Product `orm:"rel(m2m)"`//ManyToMany
}

创建orm对象,插入用户:

func (this *InsertUserController) Get() {
    this.TplName = "insertuser.html"
}
func (this *InsertUserController) Post() {
    name := this.GetString("name")
    age, err := this.GetInt("age")
    if err != nil {
        this.Ctx.WriteString("插入失败!")
    }
    nickname := this.GetString("nickname")
    user := models.User{Name:name, Age:age, Nickname:nickname}
    orm := orm.NewOrm()
    //INSERT INTO USER (NAME, age, nickname)  VALUE('Alice', 24, 'bb')
    n, err := orm.Insert(&user)
    if err == nil && n > 0 {
        this.Ctx.WriteString("插入成功!")
    }else {
        this.Ctx.WriteString("插入失败!")
    }
}

insertuser.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插入用户</title>
</head>
<body>
    <form action="/insertuser" method="post">
        <table>
            <thead>插入用户</thead>
            <tbody>
                <tr>
                    <td>姓名:</td>
                    <td>
                        <input id="name" name="name" type="text">
                    </td>
                </tr>
                <tr>
                    <td>年龄:</td>
                    <td>
                        <input id="age" name="age" type="text">
                    </td>
                </tr>
                <tr>
                    <td>昵称:</td>
                    <td>
                        <input id="nickname" name="nickname" type="text">
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="submit" value="插入"/>
                    </td>
                    <td>
                        <input type="reset" value="重置"/>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

删除用户

func (this *DeleteUserController) Get1() {
    //通过id删除
    //http://localhost:8080/deleteuser?id=2
    //获取id
    id, err := this.GetInt("id")
    if err != nil {
        this.Ctx.WriteString("删除失败!")
        return
    }
    //创建user对象
    user := models.User{Id:id}
    orm := orm.NewOrm()
    //delete函数默认根据id进行删除,也可以根据指定的字段进行删除
    //DELETE FROM USER WHERE id = 2;
    n, err := orm.Delete(&user)
    if n > 0 && err == nil {
        this.Ctx.WriteString("删除成功!")
        return
    }else {
        this.Ctx.WriteString("删除失败!")
    }
}

func (this *DeleteUserController) Get() {

    //通过姓名删除
    //http://localhost:8080/deleteuser?name=admin
    name := this.GetString("name")
    user := models.User{Name:name}

    //创建orm对象
    orm := orm.NewOrm()
    //delete函数默认根据id进行删除,也可以根据指定的字段进行删除
    //DELETE FROM USER WHERE NAME='Alice';
    n, err := orm.Delete(&user, "name")
    if n > 0 && err == nil {
        this.Ctx.WriteString("删除成功!")
        return
    }else {
        this.Ctx.WriteString("删除失败!")
    }
}

查询用户

func (this *QueryUserController) Get1() {
    //获取id查询用户
    //http://localhost:8080/queryuser?id=2
    id, err := this.GetInt("id")
    if err != nil {
        this.Ctx.WriteString("查询出错!")
        return
    }
    user := models.User{Id:id}

    //创建orm
    orm := orm.NewOrm()
    //默认根据id查询
    //SELECT * FROM USER WHERE id = 4;
    err = orm.Read(&user)
    if err != nil {
        this.Ctx.WriteString("查询出错!")
        return
    }else {
        this.Ctx.WriteString("id = " + strconv.Itoa(user.Id) + "\nname = " +
            user.Name + "\nage = " + strconv.Itoa(user.Age) + "\nnickname = " + user.Nickname)
    }
}


func (this *QueryUserController) Get() {
    //http://localhost:8080/queryuser?name=admin
    //获取用户输入的姓名
    name := this.GetString("name")
    //构造user
    user := models.User{Name:name}
    //创建orm
    orm := orm.NewOrm()
    //根据name查询用户,Read函数如果不指定参数
    //SELECT * FROM USER WHERE NAME = '吴俏祥';
    err := orm.Read(&user, "name")
    if err != nil {
        this.Ctx.WriteString("查询出错!")
        return
    }else {
        this.Ctx.WriteString("id = " + strconv.Itoa(user.Id) + "\nname = " +
            user.Name + "\nage = " + strconv.Itoa(user.Age) + "\nnickname = " + user.Nickname)
    }
}

更新用户

//http://localhost:8080/updateuser?id=1&name=tom&nickname=234&age=23
func (this *UpdateUserController) Get1() {
    id, err := this.GetInt("id")//获取id
    if err != nil {
        this.Ctx.WriteString("更新失败!")
        return
    }
    name := this.GetString("name")//获取姓名
    nickname := this.GetString("nickname")//获取昵称
    age, err := this.GetInt("age")
    if err != nil {
        this.Ctx.WriteString("更新失败!")
        return
    }
    user := models.User{Id:id, Name:name, Nickname:nickname, Age:age}
    //UPDATE USER SET NAME = '杜紫维' WHERE id = 1;
    //user := models.User{Id:id, Name:name, Nickname:nickname}
    orm := orm.NewOrm()
    //update函数根据对象的id进行更新,必须指定id
    n, err := orm.Update(&user)
    if n > 0 && err == nil {
        this.Ctx.WriteString("更新成功!")
    }else {
        this.Ctx.WriteString("更新失败!")
    }
}



//http://localhost:8080/updateuser?id=1&name=tom&nickname=234&age=23
func (this *UpdateUserController) Get() {
    id, err := this.GetInt("id")//获取id
    if err != nil {
        this.Ctx.WriteString("更新失败!")
        return
    }
    name := this.GetString("name")//获取姓名
    nickname := this.GetString("nickname")//获取昵称
    age, err := this.GetInt("age")
    if err != nil {
        this.Ctx.WriteString("更新失败!")
        return
    }
    user := models.User{Id:id, Name:name, Nickname:nickname, Age:age}
    //UPDATE USER SET NAME = '杜紫维' WHERE id = 1;
    //user := models.User{Id:id, Name:name, Nickname:nickname}
    orm := orm.NewOrm()
    //update函数根据指定字段进行更新,且必须指定id
    n, err := orm.Update(&user, "name")
    if n > 0 && err == nil {
        this.Ctx.WriteString("更新成功!")
    }else {
        this.Ctx.WriteString("更新失败!")
    }
}

插入订单

func (this *InserOrderController) Get(){
    //创建orm
    orm := orm.NewOrm()
    //创建订单
    order := models.Userorder{}
    //对订单初始化
    order.Orderdata = "this is order123"
    order.User = &models.User{Id:6}
    //如果不指定Id,可以插入成功,但是外键user_id为0
    //order.User = &models.User{Name:"吴俏祥"}
    //插入订单
    n, err := orm.Insert(&order)
    //判断是否插入成功
    if n > 0 && err != nil {
        this.Ctx.WriteString("插入失败!")
        return
    }
    this.Ctx.WriteString("插入成功!")
}

查询订单

func (this *QueryOrderController) Get(){
    orm := orm.NewOrm()
    //可以传递表名(大小写无关)和对象名
    qs := orm.QueryTable("Userorder")
    var orders []*models.Userorder
    //SELECT * FROM userorder WHERE user_id = 1;
    order_num, err := qs.Filter("user__id", 1).All(&orders)//user__id=user.id
    if err != nil {
        this.Ctx.WriteString("query order fail!")
        return
    }
    fmt.Println("order_num = ", order_num)
    for _, order := range orders {
        fmt.Println("order = ", order)
    }
    this.Ctx.WriteString("查询成功!")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值