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{})
效果


相关文章:
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:"conten…...
C# Blazor 学习笔记(0.1):如何开始Blazor和vs基本设置
文章目录 前言资源推荐环境如何开始Blazor个人推荐设置注释快捷键热重载设置 前言 Blazor简单来说就是微软提供的.NET 前端框架。使用 WebAssembly的“云浏览器”,集成了Vue,React,Angular等知名前端框架的特点。 资源推荐 微软官方文档 Blazor入门基础视频合集 …...
原码的乘法运算 补码乘法运算
补码乘法 对比...
找不到d3dx9_43.dll丢失怎么解决(分享几种解决方法)
为什么我们打开电脑软件或许游戏时候,电脑会报错出现d3dx9_43.dll丢失,或许找不到d3dx9_43.dll等等的提示。下面来详细介绍一下d3dx9_43.dll详细解决方法跟d3dx9_43.dll是什么。 如果你的系统中没有安装或安装不完整的d3dx9_43.dll运行时,应…...
篇四:建造者模式:逐步构造复杂对象
篇四:“建造者模式:逐步构造复杂对象” 设计模式是软件开发中的重要组成部分,建造者模式是创建型设计模式中的一种。建造者模式旨在逐步构造复杂对象,将对象的构造与其表示分离,从而使得同样的构建过程可以创建不同的…...
vs导出和导入动态库和静态库
1. 动态库和导出和导入 1.1 动态库的导出 1. 创建新项目 新建新项目,选择动态链接库(DLL)。 填写项目名称,并选择项目保存的路径,然后点击创建。 创建完成后,会自动生成如下所示文件,可以根据…...
30 使用easyExcel依赖生成Excel
30.1 导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId&…...
排序进行曲-v2.0
文章目录 小程一言直接插入排序步骤举例复杂度分析应用场景实际举例代码实现 希尔排序步骤举例复杂度分析应用场景实际举例代码实现 堆排序步骤举例复杂度分析应用场景实际举例代码实现 小程一言 这篇文章是在排序进行曲1.0之后的续讲, 由于在上一篇讲的排序的基本…...
反弹shell的N种姿势
预备知识1. 关于反弹shell 就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。2. 反弹shel…...
创意视频剪辑教程:快速合并视频并标题,让你的作品更吸睛!
想要让你的视频作品脱颖而出,引人注目?不再担心,我们为你带来了一款创意视频剪辑教程,教你如何快速合并视频并添加令人惊艳的标题效果!让你的作品在分钟内变得酷炫而精彩,向世界展示你的创意! …...
解决Hadoop审计日志hdfs-audit.log过大的问题
【背景】 新搭建的Hadoop环境没怎么用,就一个环境天天空跑,结果今天运维告诉我说有一台服务器磁盘超过80%了,真是太奇怪了,平台上就跑了几个spark测试程序,哪来的数据呢? 【问题调查】 既然是磁盘写满了&…...
【Java】java和kotlin关于Json写文件
Java写json文件 public class WriterJson {public static void main(String[] args) {// 创建一个 JSON 对象JSONObject jsonObject new JSONObject();jsonObject.put("case", "testtest");JSONObject jsonObjects new JSONObject();jsonObjects.put(&q…...
【深度学习】采用自动编码器生成新图像
一、说明 你知道什么会很酷吗?如果我们不需要所有这些标记的数据来训练 我们的模型。我的意思是标记和分类数据需要太多的工作。 不幸的是,大多数现有模型从支持向量机到卷积神经网,没有它们,卷积神经网络就无法训练。无监督学习不…...
华为云交付
文章目录 一、华为云-公有云架构华为公有云的主要服务1.华为云服务—计算类2.华为云服务——存储类3.华为云服务—网络类4.华为云服务—管理和监督类5.华为云数据库 二、待续 一、华为云-公有云架构 华为公有云的主要服务 ECS:弹性云服务器( Elastic Cl…...
dns瞅一瞅
正向解析—域名到ip 反向解析–ip到域名 域名本身是从又往左来解释的 根域—最顶层的域,用null字符标识,通常会省略最后的点和null字符,但是应用程序会在解析dns之前添加这些字符 顶级域— 两种类型,一种国家、地区代码的顶级域…...
springAOP的实例
文章目录 前言一.用户登录权限校验1.1 spring 拦截器1.2 传统的用户登录权限验证1.3 使用拦截器的方式1.4 案例1.5 拦截器实现原理 三.统一异常处理3.1 什么是统一异常处理3.2 具体步骤 四.统⼀数据返回格式4.1 为什么需要统一的数据返回4.2 统一返回数据的格式4.3 统一移除处理…...
【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)
【JavaEE】Spring的开发要点总结(4) 文章目录 【JavaEE】Spring的开发要点总结(4)1. Bean的作用域1.1 一个例子感受作用域的存在1.2 通过例子说明作用域的定义1.3 六种不同的作用域1.3.1 singleton单例模式(默认作用域…...
P1320 压缩技术(续集版)
题目描述 设某汉字由 N N N \times N NN 的 0 \texttt 0 0 和 1 \texttt 1 1 的点阵图案组成。 我们依照以下规则生成压缩码。连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从左到右,由上至下。第一个数表示连续有…...
k8s(七) 叩丁狼 service Ingress
负责东西流量(同层级/内部服务网络通信)的通信 service的定义 apiVersion: v1 kind: Service metadata:name: nginx-svclabels:app: nginx-svc spec:ports:- name: http # service 端口配置的名称protocol: TCP # 端口绑定的协议,支持 TCP、…...
Android Studio 关于BottomNavigationView 无法预览视图我的解决办法
一、前言:最近在尝试一步一步开发一个自己的软件,刚开始遇到的问题就是当我们引用 com.google.android.material.bottomnavigation.BottomNavigationView出现了无法预览视图的现象,我也在网上查了很多中解决方法,最后在执行了如下…...
嵌入式开发必备:三大代码对比工具深度评测
1. 代码对比工具概述作为一名嵌入式开发工程师,我每天都要处理大量的代码修改和版本对比工作。在多年的开发实践中,我发现选择合适的代码对比工具能极大提升工作效率。虽然Beyond Compare是业内公认的标杆产品,但实际工作中我们还有更多选择&…...
通信确定性可视化冗余现场总线技术开发白皮书(能源化工交通高可靠行业 Profibus DP CAN PROFINET EtherNet/IP SPE APL)
1.前言现场总线是工业物联网的核心支撑技术,但当前国际主流方案在国内应用中普遍存在开发门槛高、硬件成本高、调试维护复杂、冗余配置昂贵等问题,难以满足中小型自动化项目及国产控制系统对高性价比、高可靠性通信的需求。CANWeb现场总线深度融合CAN的高…...
猫抓cat-catch:高效媒体捕获与资源下载全指南
猫抓cat-catch:高效媒体捕获与资源下载全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓cat-catch是一款专注于网页媒体资源捕…...
数学动画音频同步:让几何图形随音乐起舞的技术实现
数学动画音频同步:让几何图形随音乐起舞的技术实现 【免费下载链接】manim A community-maintained Python framework for creating mathematical animations. 项目地址: https://gitcode.com/GitHub_Trending/man/manim 在数学可视化领域,Manim…...
Nanbeige4.1-3B惊艳效果:同一硬件下对比Phi-3-mini,Nanbeige长文本保持率+35%
Nanbeige4.1-3B惊艳效果:同一硬件下对比Phi-3-mini,Nanbeige长文本保持率35% 最近,一个只有30亿参数的小模型在开发者圈子里悄悄火了起来。它不是那种动辄千亿参数、需要顶级显卡才能跑的“巨无霸”,而是一个在普通硬件上就能流畅…...
手把手教你用UML用例图梳理业务流程(附真实项目案例)
实战指南:用UML用例图重构电商订单系统业务流程 1. 为什么用例图是需求分析的基石 在软件开发的混沌初期,当产品经理、开发者和业务方还在用各自的语言描述需求时,UML用例图就像一盏明灯,它能跨越专业术语的鸿沟,用可视…...
如何突破Cursor AI编程助手的使用限制:技术原理与实践指南
如何突破Cursor AI编程助手的使用限制:技术原理与实践指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your…...
告别兼容性烦恼,让老旧应用在现代浏览器中“无缝”运行
在数字化转型的浪潮中,企业的技术架构往往承载着历史的痕迹。当我们享受着现代浏览器带来的极速体验与丰富扩展时,一个不容忽视的挑战正悄然影响着员工的工作效率与IT运维的平静——那就是“传统浏览器支持”问题。这并非一个遥不可及的技术概念…...
S32K3项目中途想换调试器?手把手教你为已有工程添加Lauterbach调试接口
S32K3项目中途切换调试器:无缝迁移Lauterbach接口的工程实践 在嵌入式开发领域,调试工具的灵活切换往往意味着效率的飞跃。想象这样一个场景:你正在使用NXP S32K3系列MCU开发汽车电子控制单元,项目已进行到中期测试阶段࿰…...
短视频 SEO 如何提高网站的搜索排名
为什么短视频 SEO 是提高网站搜索排名的关键 在当今数字化时代,短视频平台已经成为人们获取信息和娱乐的主要渠道。短视频的流行不仅改变了人们的观看习惯,还深刻影响了网络营销的方式。如何利用短视频 SEO(搜索引擎优化)来提高网…...
