• golang之xorm简单使用


    ==安装==

    go get github.com/go-xorm/xorm

    ==代码==

    package main
    
    import (
        "fmt"
        _ "github.com/go-sql-driver/mysql"
        "github.com/go-xorm/xorm"
    )
    
    type PointInfo struct {
        Id         int64  `xorm:"pk autoincr"`
        ProductKey string `xorm:"product_key"`
        DeviceName string `xorm:"device_name"`
        PointId    string `xorm:"point_id"`
    }
    
    const (
        UserName = "root"
        PassWord = "RexelMySql998866"
        Host     = "47.116.50.192"
        Port     = "33306"
        Database = "pulse"
        Charset  = "utf8"
    )
    
    var xe *xorm.Engine
    
    func init() {
        sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", UserName, PassWord, Host, Port, Database, Charset)
    
        // 1、创建数据库引擎
        var err error
        xe, err = xorm.NewEngine("mysql", sqlStr)
        if err != nil {
            fmt.Println("数据库连接失败:", err)
            return
        }
        if xe == nil {
            fmt.Println("引擎初始化异常")
            return
        }
    
        // 2、创建或者同步表(名称为Stu)
        err = xe.Sync(new(PointInfo))
        if err != nil {
            fmt.Println("数据表同步失败:", err)
        }
    }
    
    func main() {
        session := xe.NewSession()
        defer xe.Close()
        defer session.Close()
        err := session.Begin()
        if err != nil {
            return
        }
    
        id, err := insert()
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = query(id)
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = queryList("device0", "point0")
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = queryByPage("device0")
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = update(id)
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = deleteOne(id)
        if err != nil {
            _ = session.Rollback()
            return
        }
        err = session.Commit()
        if err != nil {
            return
        }
    }
    
    func insert() (id int64, err error) {
        pointInfo := new(PointInfo)
        pointInfo.ProductKey = "product1"
        pointInfo.DeviceName = "device1"
        pointInfo.PointId = "point1"
    
        affected, err := xe.InsertOne(pointInfo)
        if err != nil {
            return 0, err
        }
        fmt.Println(affected)
        return pointInfo.Id, nil
    }
    
    func query(id int64) (err error) {
        pointInfo := PointInfo{Id: id}
        get, err := xe.Get(&pointInfo)
        fmt.Println(get)
        return err
    }
    
    func queryList(deviceName string, pointId string) (err error) {
        list := make([]PointInfo, 0)
        err = xe.Where("device_name like ?", "%"+deviceName+"%").And("point_id like ?", "%"+pointId+"%").OrderBy("id").Find(&list)
        fmt.Println(list)
        return err
    }
    
    func queryByPage(deviceName string) (err error) {
        list := make([]PointInfo, 0)
        page := 0
        pageSize := 2
        limit := pageSize
        start := page * pageSize
        totalCount, err := xe.Where("device_name like ?", "%"+deviceName+"%").Limit(limit, start).FindAndCount(&list)
        fmt.Println(totalCount)
        fmt.Println(list)
        return err
    }
    
    func update(id int64) (err error) {
        pointInfo := new(PointInfo)
        pointInfo.ProductKey = "product2"
        pointInfo.DeviceName = "device2"
        pointInfo.PointId = "point2"
        affected, err := xe.Id(id).Update(pointInfo)
        fmt.Println(affected)
        return err
    }
    
    func deleteOne(id int64) (err error) {
        pointInfo := new(PointInfo)
        affected, err := xe.Id(id).Delete(pointInfo)
        fmt.Println(affected)
        return err
    }
  • 相关阅读:
    shell 重启 tomcat 脚本
    shell 复制/备份文件 脚本
    在 CentOS 上安装 node.js
    架构漫谈(一):什么是架构? -王概凯
    冷静审视人工智能技术的本质 | 一图看懂新一代人工智能知识体系大全
    时代在变
    什么是设计思维Design Thinking——风靡全球的创造力培养方法
    金融即服务(FaaS),将开启场景化金融新格局
    devops工具
    京东金融-供应链金融业务介绍
  • 原文地址:https://www.cnblogs.com/quchunhui/p/16127295.html
Copyright © 2020-2023  润新知