go练习 day01

DTO: note_dto.go

package dtoimport "king/model"type NoteAddDTO struct {ID        uintTitle     string  `json:"title" form:"title" binding:"required" message:"标题不能为空"`Content   string  `json:"content" form:"content" binding:"required" message:"内容不能为空"`UserID    uint    `json:"userId" form:"userId" binding:"required" message:"用户ID不能为空"`
}func (m *NoteAddDTO)ConverToModel (iNote *model.Note) {iNote.Title = m.TitleiNote.Content = m.ContentiNote.UserID = m.UserID
}

Model:note.go

package modelimport "gorm.io/gorm"type Note struct {gorm.ModelTitle    string `json:"title" gorm:"size:64;not null"`Content  string `json:"content" gorm:"not null"`UserID   uint   `json:"user_id" gorm:"not null"`
}

Dao:note_dao.go

package daoimport ("king/model""king/service/dto"
)var noteDao *NoteDaotype NoteDao struct {BaseDao
}func NewNoteDao() *NoteDao {if noteDao == nil {noteDao = &NoteDao{NewBaseDao(),}}return noteDao
}func (m *NoteDao) AddNote(iNoteAddDTO *dto.NoteAddDTO) error{var iNote model.NoteiNoteAddDTO.ConverToModel(&iNote)err := m.Orm.Create(&iNote).Errorif err == nil {iNoteAddDTO.ID = iNote.ID}return err
}

Service:note_service.go

package serviceimport ("king/dao""king/service/dto"
)var noteService *NoteServicetype NoteService struct {BaseServiceDao *dao.NoteDao
}func NewNoteService() *NoteService{if noteService == nil {noteService = &NoteService{Dao: dao.NewNoteDao(),}}return noteService
}func (m *NoteService) AddNote(iNoteAddDTO *dto.NoteAddDTO) error{return m.Dao.AddNote(iNoteAddDTO)
}

API:note_api.go

package apiimport ("king/service""king/service/dto""net/http""github.com/gin-gonic/gin"
)const (ERR_CODE_ADD_NOTE       = 10021
)type NoteApi struct {BaseApiService *service.NoteService
}func NewNoteApi() NoteApi{return NoteApi{BaseApi: NewBaseApi(),Service: service.NewNoteService(),}
}func (m NoteApi)AddNote(c *gin.Context) {var iNoteAddDTO dto.NoteAddDTOif err := m.BuildRequest(BuildRequestOption{Ctx: c, DTO: &iNoteAddDTO}).GetError(); err != nil {return }err := m.Service.AddNote(&iNoteAddDTO)if err != nil {m.ServerFail(ResponseJson{Code: ERR_CODE_ADD_NOTE,Status: http.StatusBadRequest,Msg: "新增文章失败",})return}m.OK(ResponseJson{Code: SUCCESS,Msg: "新增文章成功",Data: iNoteAddDTO,})
}

Router:note.go

package routerimport ("king/api""github.com/gin-gonic/gin"
)func InitNoteRoutes() {RegistRoute(func(rgPublic *gin.RouterGroup, rgAuth *gin.RouterGroup) {noteApi := api.NewNoteApi()rgAuthNote := rgAuth.Group("note"){rgAuthNote.POST("", noteApi.AddNote)}})
}

Routers:router.go

func initBasePlatformRoutes() {InitNoteRoutes()
}

db:AutoMigrate

db.AutoMigrate(&model.Note{})

效果

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Live Market做世界C端用户数据的耕耘,数据和流量的价值呈现

在数字化时代,数据成为了推动经济增长和商业发展的重要资源,而流量则是数据价值的体现和传递媒介。随着全球互联网的普及和移动设备的智能化,C端用户数据的收集和分析变得尤为重要。在这个领域,有一家专注于世界C端用户数据耕耘的…

分享18个用于处理 null、NaN 和undefined 的 JS 代码片段

🎬 岸边的风:个人主页 🔥 个人专栏:《 VUE 》 《 javaScript 》 ⛺️生活的理想,就是为了理想的生活! 目录 前言 内容 📟 1. 检查是否为null: 📟 2. 检查undefined: &#x1…

【uniapp 样式】使用setStorageSync存储历史搜索记录

<template><view><view class"zhuangbox u-flex"><u--inputplaceholder"请输入关键字搜索"border"surround"shapecircleprefixIcon"search"prefixIconStyle"font-size: 22px;color: #909399"v-model&q…

测试|LoadRunner安装及介绍

测试|LoadRunner安装及介绍 文章目录 测试|LoadRunner安装及介绍1.什么是LoadRunner2.LoadRunner特点3.LoadRunner基本概念4.LoadRunner三大组件之间关系LoadRunner安装1.安装包2.安装loadrunner 1.什么是LoadRunner LoadRunner是用来模拟用户负载完成性能测试的工具。 它适用…

重新理解 RocketMQ Commit Log 存储协议

最近突然感觉&#xff1a;很多软件、硬件在设计上是有 root reason 的&#xff0c;不是 by desgin 如此&#xff0c;而是解决了那时、那个场景的那个需求。一旦了解后&#xff0c;就会感觉在和设计者对话&#xff0c;了解他们的思路&#xff0c;学习他们的方法&#xff0c;思维…

Android Studio 关于BottomNavigationView 无法预览视图我的解决办法

一、前言&#xff1a;最近在尝试一步一步开发一个自己的软件&#xff0c;刚开始遇到的问题就是当我们引用 com.google.android.material.bottomnavigation.BottomNavigationView出现了无法预览视图的现象&#xff0c;我也在网上查了很多中解决方法&#xff0c;最后在执行了如下…

无涯教程-Lua - 简介

Lua是一种轻量语言&#xff0c;它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用ANSI C语言编写并以源代码形式开放&#xff0c;编译后仅仅一百余K&#xff0c;可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样&#xff0c;网络通信…

在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)

1. 创建安装目录 2. 下载、安装、编译 进入安装目录&#xff1a; cd /app/soft/nginx/ 下载&#xff1a; wget https://nginx.org/download/nginx-1.21.6.tar.gz 解压&#xff1a; tar -zxvf nginx-1.21.6.tar.gz 安装插件&#xff1a; yum -y install pcre-devel 安装…

spring boot+thymeleaf+semantic ui 分页

参考&#xff1a; https://my.oschina.net/ayyao/blog/898041 后端 springboot 使用&#xff1a; com.github.pagehelper.PageInfo&#xff0c;作为分页对象 <!--引入分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifa…

高通滤波器,低通滤波器

1.高通滤波器是根据像素与邻近像素的亮度差值来提升该像素的亮度。 import cv2 import numpy as np from scipy import ndimagekernel_3_3 np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]]) print(kernel_3_3) kernel_5_5 np.array([[-1,-1,-1,-1,-1],[-1,1,2,1,-1],[-1,2,4,2,-…

音视频技术开发周刊 | 304

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 更强的Llama 2开源&#xff0c;可直接商用&#xff1a;一夜之间&#xff0c;大模型格局变了 Meta 终于发布了大家期待已久的免费可商用版本 Llama 2。 6000份问卷透露出AI…

ClickHouse目录结构

默认安装路径&#xff1a;/var/lib/clickhouse/ 目录结构&#xff1a; 主要介绍metadata和data metadata 其中的default、system及相应的数据库&#xff0c;.sql文件即数据库创建相关sql语句 进入default数据库&#xff08;默认数据库&#xff09;&#xff1a; 可以看到数据库…

「如何优雅有效利用周末和下班时间?」

文章目录 每日一句正能量前言下班的时间规划周末的时间规划提升周末体验感的好方法怎样才能获得充分的休息后记 每日一句正能量 眼望古城街尽&#xff0c;心谱落愁无序&#xff0c;旧时的誓言&#xff0c;曾而相似&#xff0c;河水在遵循河道的指引下&#xff0c;在曲折前进中放…

QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

QT学习笔记-QT5.15 MSVC编译套件时编译日志及运行日志日志中文乱码解决 0、基础环境1、QtCreator中的基本设置编辑->首选项->文本编辑器 2、问题1&#xff1a;MSVC编译日志乱码问题解决问题描述解决方法 3、问题2&#xff1a;MSVC构建套件编译后程序运行日志乱码问题问题…

【电影推荐系统】实时推荐

概览 技术方案&#xff1a; 日志采集服务&#xff1a;通过利用Flume-ng对业务平台中用户对于电影的一次评分行为进行采集&#xff0c;实时发送到Kafka集群。消息缓冲服务&#xff1a;项目采用Kafka作为流式数据的缓存组件&#xff0c;接受来自Flume的数据采集请求。并将数据推…

深度学习:使用全连接神经网络FCN实现MNIST手写数字识别

1 引言 本项目构建了一个全连接神经网络(FCN)&#xff0c;实现对MINST数据集手写数字的识别&#xff0c;没有借助任何深度学习算法库&#xff0c;从原理上理解手写数字识别的全过程&#xff0c;包括反向传播&#xff0c;梯度下降等。 2 全连接神经网络介绍 2.1 什么是全连接…

maven引入本地jar包的简单方式【IDEA】【SpringBoot】

前言 想必点进来看这篇文章的各位&#xff0c;都是已经习惯了Maven从中央仓库或者阿里仓库直接拉取jar包进行使用。我也是&#x1f921;&#x1f921;。 前两天遇到一个工作场景&#xff0c;对接三方平台&#xff0c;结果对方就是提供的一个jar包下载链接&#xff0c;可给我整…

SpringBoot使用MyBatis Plus + 自动更新数据表

1、Mybatis Plus介绍 Mybatis&#xff0c;用过的都知道&#xff0c;这里不介绍&#xff0c;mybatis plus只是在mybatis原来的基础上做了些改进&#xff0c;增强了些功能&#xff0c;增强的功能主要为增加更多常用接口方法调用&#xff0c;减少xml内sql语句编写&#xff0c;也可…

python使用selenium 打开谷歌浏览器闪退, 怎么解决

问题描述&#xff1a; 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 使用 Selenium 操作 Chrome 浏览器&#xff0c; Chrome 浏览器闪退 问题解决&#xff1a; 可能是以下几个方面出现了问题&#xff1a; 1. Chromedriver 版本与 Chrome 浏览器版本不匹配 你需要确保你正在…

安卓:JzvdStd——网络视频播放器

目录 一、JzvdStd介绍 JzvdStd的特点和功能&#xff1a; JzvdStd常用方法&#xff1a; 二、JzvdStd使用 1、补充知识&#xff1a; 例子&#xff1a; MainActivity &#xff1a; VideoPageAdapter &#xff1a; activity_main&#xff1a; video_page&#xff1a; …