当前位置: 首页 > news >正文

做网站需要好多钱海南百度推广开户

做网站需要好多钱,海南百度推广开户,怎么才能百度做网站,注册网站域名需要什么资料医疗器械背景 上一章 Go语言开发基于SQLite数据库实现用户表新增接口(二) 这一章我们实现用户表的查询详情接口 代码实现 mapper层 type UserMapper interface {GetById(id uint64) (*model.User, error)}type userMapper struct { }func (m *userMapper) GetById(id uint64) (*mod…

背景

上一章
Go语言开发基于SQLite数据库实现用户表新增接口(二)
这一章我们实现用户表的查询详情接口

代码实现

mapper层

type UserMapper interface {GetById(id uint64) (*model.User, error)}type userMapper struct {
}func (m *userMapper) GetById(id uint64) (*model.User, error) {// 创建 model.User 的指针实例user := &model.User{}result, err := model.GetById(user.TableName(), id, user)if err != nil {return nil, err}// 确保返回的结果是 *model.User 类型user, ok := result.(*model.User)if !ok {return nil, fmt.Errorf("expected *model.User, but got %T", result)}return user, nil
}

ModelTable实现

func GetById(tableName string, id uint64, dest interface{}) (interface{}, error) {// 确保 dest 是指针类型val := reflect.ValueOf(dest)if val.Kind() != reflect.Ptr || val.IsNil() {return nil, fmt.Errorf("dest must be a non-nil pointer")}// 构造 SQL 查询query := fmt.Sprintf("SELECT * FROM %s WHERE id = ? LIMIT 1", tableName)// 执行查询row := config.Db.QueryRow(query, id)// 获取结构体的字段fieldPointers, err := getFieldPointers(reflect.TypeOf(dest).Elem(), reflect.ValueOf(dest).Elem())if err != nil {return nil, err}// 使用 Scan 将查询结果映射到结构体err = row.Scan(fieldPointers...)if err != nil {if err == sql.ErrNoRows {return nil, fmt.Errorf("No rows found with id %d", id)}return nil, err}return dest, nil
}// 递归地获取结构体字段的指针(支持嵌套结构体)
func getFieldPointers(t reflect.Type, v reflect.Value) ([]interface{}, error) {var fieldPointers []interface{}for i := 0; i < t.NumField(); i++ {field := t.Field(i)fieldValue := v.Field(i)// 如果字段是结构体类型,递归进入if fieldValue.Kind() == reflect.Struct {// 递归处理嵌套的结构体字段nestedPointers, err := getFieldPointers(field.Type, fieldValue)if err != nil {return nil, err}fieldPointers = append(fieldPointers, nestedPointers...)} else {// 否则将字段的指针添加到字段指针数组fieldPointers = append(fieldPointers, fieldValue.Addr().Interface())}}return fieldPointers, nil
}

这里我们映射的结构体中的对应db字段 , 这样的好处是我们这个方法是基础方法,其他结构体中只要有ModelTable结构体,我们就可以直接继续使用了。
在这里插入图片描述

service层

type UserService interface {GetById(id uint64) (*model.User, error)}

service实现层

type UserServiceImpl struct {m mapper.UserMapper
}func (u UserServiceImpl) GetById(id uint64) (*model.User, error) {return u.m.GetById(id)
}

controller层

type UserController struct {UserService service.UserService
}func (u *UserController) GetById(rc *req.Ctx) {id := uint64(req.PathParamInt(rc.GinCtx, "id"))user, err := u.UserService.GetById(id)assert.IsNil(err)rc.ResData = user
}

这里有个PathParamInt方法 获取路径上面的参数

func PathParamInt(g *gin.Context, pm string) int {value, _ := strconv.Atoi(g.Param(pm))return value
}

接口

在这里插入图片描述

测试

在这里插入图片描述

源码地址

使用Go语言开发基于SQLite数据库实现用户表相关接口项目示例,可进行扩展,拿来即用

参考

代码风格参考的mayfly-go ,SQLite这块是自己实现的

http://www.hkea.cn/news/848368/

相关文章:

  • 中国建设监理网站广告网络
  • 网站维护费用怎么收路由优化大师官网
  • 如何加入小说网站做打字员合肥网站优化推广方案
  • 网站建设现状关键词在线优化
  • 网站建设就业百度网址导航主页
  • 郑州公司做网站汉狮中囯联通腾迅
  • 专业网上购物平台优化网站的步骤
  • 用web开发一个网站怎么做网站推广优化平台
  • 建设企业网站进去无法显示搜索引擎seo
  • 网站 分辨率百度视频推广
  • 中国红河网seo排名工具
  • 做网站商丘3a汽车集团公司网络营销方案
  • 网络宣传推广策划范文seo如何优化排名
  • 网站 建设 原则新闻今天的最新新闻
  • 服装网站首页设计主要推广手段免费
  • 网站建设公司做销售好不好?seo搜索引擎优化实训总结
  • 江西威乐建设集团有限公司企业网站长春关键词优化公司
  • 深圳网站建设lxhd英文关键词seo
  • 在线购物商城网站百度移动端排名软件
  • 太原网站的公司友情链接的英文
  • 网站是用什么做的吗百度q3财报2022
  • 深圳福田网站建设公司如何做谷歌seo推广
  • 西安有做网站的吗北京网站设计公司
  • 哪家专门做特卖网站平台连接
  • 衢州网站推广最近发生的重大新闻
  • 网页设计的网站配色方案seo基础培训机构
  • 维护网站是什么工作淄博网站制作
  • 做电影下载网站成本淘宝关键词排名
  • 企业h5网站建设百度推广电话是多少
  • 中国保密在线网站培训系统软文怎么做