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)
  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15775393.html
Copyright © 2011-2022 走看看