创建连接
package config
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
//var Db string = "root:Hjf7654321@tcp(39.99.188.233:3306)/xxg"
var DbCont2 string = "root:root@tcp(127.0.0.1:3306)/go?charset=utf8mb4&parseTime=True&loc=Local"
var DbConn *gorm.DB
func init() {
db,errDb:=gorm.Open("mysql",DbCont2)
if errDb!=nil{
fmt.Println(errDb)
} else {
fmt.Println("gorm连接成功")
}
DbConn = db
}
增删改查
package index
import (
"crypto/md5"
"encoding/hex"
"fmt"
"gin/config"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"math/rand"
"strconv"
)
var DbConn *gorm.DB = config.DbConn
type Test struct {
Id int `json:"id"`
Token string `json:"token"`
Ctime string `json:"ctime"`
}
//表名
func (Test) TableName() string {
return "test"
}
func Add(c *gin.Context) {
num := rand.Intn(999999-100000) + 100000
test := Test{Token: md5V(strconv.Itoa(num))}
DbConn.Create(&test)
if DbConn.Error != nil {
fmt.Println("create failed")
c.JSON(200, gin.H{
"status": -1,
"msg": "失败",
"data": "",
})
}
c.JSON(200, gin.H{
"status": 1,
"msg": "成功",
"data": "",
})
}
func Read(c *gin.Context) {
//查所有
//var test[] Test
//DbConn.Find(&test)
//主键查询
var test[] Test
DbConn.First(&test, 100)
// 获取所有记录
if DbConn.Error != nil {
fmt.Println("find failed")
}
c.JSON(200, gin.H{
"status": 1,
"msg": "成功",
"data": test[0],
})
}
func md5V(str string) string {
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
二维数组排序
package main
import (
//"database/sql"
_"github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"log"
"fmt"
"time"
"sort"
)
type users struct {
Id int
Name string
Age int
}
type personSlice []users
func (s personSlice) Len() int { return len(s) }
func (s personSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s personSlice) Less(i, j int) bool { return s[i].Age < s[j].Age }
func main(){
t1 := time.Now()
db,errDb:=gorm.Open("mysql","root:123456@tcp(XXX.XXX.XXX.XXX:3306)/xxg")
if errDb!=nil{
fmt.Println(errDb)
}
defer db.Close()//用完之后关闭数据库连接
db.LogMode(true)//开启sql debug 模式
//SELECT * FROM `animals` WHERE (id>0 and id<999) ORDER BY id desc LIMIT 2 OFFSET 1
var owls personSlice
//db.Where("id>? and id<?",1,999).Order("id desc").Offset(2).Limit(20).Find(&owls)
db.Where("id>?",1).Order("id desc").Limit(20).Find(&owls)
//fmt.Println(owls)
t3 := time.Since(t1)
fmt.Println(t3)
sort.Stable(owls)
t4 := time.Since(t1)
fmt.Println(t4)
fmt.Println(owls)
}