gin CRUD

gin CRUD

gin CRUD

// units
package dal

//cxg 2022-7-29
import (
    "net/url"
    "svrGIN/db"
    "svrGIN/model"

    "github.com/gin-gonic/gin/binding"

    "strings"
    "svrGIN/log"

    "github.com/gin-gonic/gin"
)

func SelectUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    d := db.GetPG()
    where := ctx.Param("where")
    where, _ = url.QueryUnescape(where)
    where = strings.Trim(where, "/")
    if where != "" {
        where = " where " + where
    }
    rows, err := d.Query("select * from tunit" + where)
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        log.Log("SelectUnits()", err)
        return
    }
    defer d.Close()
    for rows.Next() {
        var row model.Tunit
        rows.Scan(&row.Unitid, &row.Unitname)
        arr.Tunits = append(arr.Tunits, &row)
    }
    arr.Status = 200
    arr.Message = "success"
    ctx.JSON(200, &arr)
}

func InsertUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    d := db.GetPG()
    tx, _ := d.Begin()
    for _, row := range arr.Tunits {
        s := "insert into tunit(unitid,unitname) values ('"
        s += row.Unitid + "','" + row.Unitname + "')"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            log.Log("InsertUnits()", err)
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func UpdateUnits(ctx *gin.Context) {
    var arr model.TunitArray
    var r model.Res
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    d := db.GetPG()
    tx, _ := d.Begin()
    for _, row := range arr.Tunits {
        s := "update tunit set unitid='" + row.Unitid + "',unitname='"
        s += row.Unitname + "' where unitid='" + row.Unitid + "'"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            log.Log("UpdateUnits()", err)
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func DeleteUnits(ctx *gin.Context) {
    var r model.Res
    d := db.GetPG()
    where := ctx.Param("where")
    where = strings.Trim(where, "/")
    s := "delete from tunit where " + where
    _, err := d.Exec(s)
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        log.Log("DeleteUnits()", err)
        return
    }
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

Original: https://www.cnblogs.com/hnxxcxg/p/16533684.html
Author: delphi中间件
Title: gin CRUD

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545978/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 05 Java中的输入、输出流

    输入输出流 内容概括: 存在java.io包中 所有输入流都是抽象类InputStream(字节输入流)和抽象类Reader(字符输入流)的子类。 所有输出流都是抽象类Output…

    技术杂谈 2023年6月21日
    082
  • MySQL InnoDB索引原理

    数据库与I/O原理 数据会持久化到磁盘,查询数据是就会有I/O操作,相对于缓存操作,I/O操作的时间成本相当高昂。 I/O操作的基本单位是一个磁盘页面,比如16KB的页面大小。当数…

    技术杂谈 2023年6月21日
    093
  • __declspec(novtable)的用法

    __declspec(novtable) 在C++中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实…

    技术杂谈 2023年7月24日
    085
  • 大整数算法

    本文主要整理了几个常用的大整数的算法:大整数加法大整数乘法大整数阶乘大整数幂其实大体的思路都差不多,都是用数组来存储大整数。以下的代码仅仅实现功能,并没有充分详细的参数判断,在实际…

    技术杂谈 2023年6月21日
    076
  • Spark在standalone中关于core的参数设置

    最近发现,在执行pyspark任务时,对pythonFunction的CPU使用率进行限制存在问题,究其根本,还是sparkConf的参数存在问题。 梳理了下spark启动参数中关…

    技术杂谈 2023年6月21日
    085
  • 2022.31 物联网

    物联网的概念最早可以追溯到1980年代初期,出现在卡内基·梅隆大学的可乐贩卖机,被认为是全球第一台隐含物联网概念的设备,它连接到互联网,可以在网络上检查库存,以确认还可供应的饮料数…

    技术杂谈 2023年5月30日
    092
  • Zookeeper-3.4.9安装

    环境: centos7 Zookeeper-3.4.9.tar.gz 官网下载 步骤 下载后上传压缩文件并解压 tar -zxvf zookeeper-3.4.9.tar.gz -…

    技术杂谈 2023年7月25日
    086
  • Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given in /wp-includes/plugin.php on line 2如何解决

    今天一位网友在安装wordpress时遇到Warning: Parameter 1 to wp_default_styles() expected to be a referenc…

    技术杂谈 2023年5月31日
    0100
  • Linux账户,组,权限管理

    内容多数来源于https://wangchujiang.com/linux-command/c/chmod.html, 开源地址:https://github.com/jaywcj…

    技术杂谈 2023年6月21日
    090
  • RocketMQ扫盲篇

    本篇博客主要参考:《浅入浅出》-RocketMQ 敖丙APACHE-RocketMQ Gitee RocketMQ官方文档RocketMQ 实战与进阶 GitChat 又是好久没有…

    技术杂谈 2023年7月25日
    061
  • 依赖冲突问题

    上篇文章中,小黑哥分析 Maven 依赖冲突分为两类: 项目同一依赖应用,存在多版本,每个版本同一个类,可能存在差异。 项目不同依赖应用,存在包名,类名完全一样的类。 第二种情况,…

    技术杂谈 2023年5月31日
    084
  • 编写一个kubernetes controller

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月25日
    070
  • 批量修改SVN的用户名和密码的尝试

    起源 公司规定每6个月需要修改一次密码,否则每天都有邮件和内网提醒。因为邮箱密码和svn等一系列应用绑定,避免每次修改密码后需要手工输入修改多个svn仓库的帐号和密码。 PS.同一…

    技术杂谈 2023年6月1日
    0113
  • Kubernetes零宕机滚动更新【转】

    默认情况下,Kubernetes 的 Deployment 是具有滚动更新的策略来进行 Pod 更新的,该策略可以在任何时间点更新应用的时候保证某些实例依然可以正常运行来防止应用 …

    技术杂谈 2023年5月31日
    090
  • tar、gzip、zip、jar是什么,怎么查看?

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 如果你是后端程序员,我想你一定见过 *.tar.gz、 *.zip、 *.jar后缀的文件吧,这些都…

    技术杂谈 2023年7月25日
    080
  • opencv.js编译

    一. 官方版本 后面发现官方有给https://github.com/opencv/opencv/releases 想查看支持哪些函数,即看./opencv-4.5.3/platf…

    技术杂谈 2023年6月1日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球