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

制作公司网站 优帮云wordpress采集查卷

制作公司网站 优帮云,wordpress采集查卷,平凉崆峒建设局网站,吉林建设网站背景 上一章 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/14563547/

相关文章:

  • wordpress跳转手机站天元建设集团有限公司商票兑付情况
  • 江苏省住房和建设部网站首页泾阳网站建设
  • 房地产广告设计网站运营的工资一般是多少
  • 有偿做设计的网站网站开发主菜单和子菜单
  • 企业网站源码怎么用wordpress怎么自动更新网站地图
  • 四川省建设注册中心网站网站的建设论文
  • 网站引导页在线做玛迪网站建设
  • 秦皇岛建设路小学网站汽车报价网站
  • 个人网站app怎么做网站推广临沂
  • 四川住房建设和城乡建设厅假网站网站手机端跳转页面模板
  • dreamviewer做网站速成建站
  • 明光网站建设上海外贸公司注册
  • 英文网站seo中国设计师网上家园
  • 必应网站提交入口关键词搜索工具app
  • 唐山网站建设互众动力网络舆情的三种分类标准
  • 美食论坛网站模板网站建设电话营销
  • 网站转微信小程序企业所得税怎么算2020
  • 代做标书网站网站建设需求方案
  • 哪个网站可以做图片链接全国最缺工100个职业排行出炉
  • 国外素材网站WordPress英文网站
  • 用php写的网站有哪些建设网站招标文件
  • 类似于wordpress的网站吗wordpress header导航
  • 查找全国免费网站建设网站后台改变图片尺寸
  • 珠海做网站哪间好地方志网站建设方案
  • 网站建设分几种类型渭南做网站哪家公司
  • 长春模板建站公司做外贸网站需要注意些什么手续
  • 免费推广网站入口新公司网站建设分录
  • 做外贸生意上哪个网站怎么建设网站阿里云
  • 做一个卖车的网站该怎么做国外电商网站建设
  • 深圳市年年卡网络科技有限公司重庆做网站及优化报价