zoukankan      html  css  js  c++  java
  • golang Gorm 运用及执行原生SQL

    复制代码
    package dbhelper
    
    import (
        "github.com/jinzhu/gorm"
        _ "github.com/jinzhu/gorm/dialects/mysql"
    )
    
    /// 连接数据库得到
    func GetConn() (*gorm.DB,error) {
        db,err :=gorm.Open("mysql","root:123456@(192.168.0.100:3306)/mytest?charset=utf8mb4&parseTime=True&loc=Local")
        return db,err
    }
    复制代码
    type User struct {
        Uid uint `gorm:"column:uid;primary_key;AUTO_INCREMENT"`
        UserName string
        Age uint
        Bj string
    }
    复制代码
    复制代码
    复制代码
    复制代码
    package createtable
    
    import (
        "GinMysql/dbhelper"
        "GinMysql/model"
        _ "github.com/jinzhu/gorm/dialects/mysql"
        "log"
    )
    
    func init(){
        var user model.User
        var userinfo model.UserInfo
        db,err := dbhelper.GetConn()
        if err!=nil{
            log.Panicln("连接数据库出错:",err)
        }
         db.SingularTable(true)   // 不设置表名为复数
    // 数据迁移 到Mysql
        db.AutoMigrate(&user)
        db.AutoMigrate(&userinfo)
    
    }
    复制代码
    复制代码
    复制代码
    复制代码
    package main
    
    import (
        // 引用 createtable 调用init方法
        _ "GinMysql/createtable"
        "GinMysql/route"
    )
    
    
    func main(){
        engin:= route.SetUpRoute()
        engin.Run(":8090")
    }
    复制代码
    复制代码
    type Mycount struct {
        Usercount uint
    }
    复制代码
        //  关于Gorm执行原生SQL
        // **********语句字段要小写************
        // ***********查询用db.Raw,其他用db.Exec
        // *********** 字段大小写要对应上 **************
        // *************** 注意要 defer rows.Close()
        var Mycount Mycount
        rows,_:= db.Debug().Raw("select Count(1) as Usercount from Users").Rows()
        defer rows.Close()
        for rows.Next() {
            rows.Scan(&Mycount.Usercount)
        }
        var users []User
        //   查询 执行用Scan 和Find 一样
        db=db.Raw("select uid,user_name,age from Users").Scan(&users)
        //db=db.Raw("select uid,user_name,age from Users").Find(&users)
        fmt.Println("Users",users)
        //  更新和删除.插入用 Exec
        db= db.Exec("update Users set user_name='def' where uid=?",1)
        fmt.Println("更新了",db.RowsAffected,"条数据")
        db= db.Exec("delete from Users where uid=?",2)
        fmt.Println("更新了",db.RowsAffected,"条数据")
        return  int32(Mycount.Usercount)
    复制代码

     

     

    复制代码
        var mycont int
        // count 使用
        db.Debug().Model(&Myaaa{}).Where("id<?",10).Count(&mycont)
        // 更新
        db.Debug().Model(&Myaaa{}).Update(my)
        // 分页   Offset 跳过     Order 排序
        db.Limit(2).Offset(1).Order("id desc").Where("id>?",0).Find(&bbb)
        // 删除
        db.Delete(my)
  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15775393.html
Copyright © 2011-2022 走看看