首页 > 其他分享 >gorm 一对一分页查询

gorm 一对一分页查询

时间:2023-10-31 23:13:00浏览次数:36  
标签:分页 form 一对一 id column json products gorm

先看一下表结构

type Products struct {
	// 商品ID
	ProductId int64 `json:"productId" form:"productId" gorm:"primaryKey;column:product_id" `
	// 分类ID
	CategoryId int64 `json:"categoryId" form:"categoryId" gorm:"column:category_id" `
	// 商品名称
	ProductName string `json:"productName" form:"productName" gorm:"column:product_name" `
	// 商品描述
	Description string `json:"description" form:"description" gorm:"column:description" `
	// 价格
	Price float32 `json:"price" form:"price" gorm:"column:price" `
	// 库存数量
	StockQuantity int64 `json:"stockQuantity" form:"stockQuantity" gorm:"column:stock_quantity" `
	// 图片链接
	ImageUrl string `json:"imageUrl" form:"imageUrl" gorm:"column:image_url" `
	// 创建时间
	CreatedTime time.Time `json:"createdTime" form:"createdTime" gorm:"autoCreateTime;column:created_time" `
	// 更新时间
	UpdatedTime time.Time `json:"updatedTime" form:"updatedTime" gorm:"autoUpdateTime;column:updated_time" `
}

然后主表,通过一个秒杀id查询 商品列表

type SeckillProducts struct {
	// id
	SeckillProductsId int64 `json:"seckillProductsId" form:"seckillProductsId" gorm:"primaryKey" `
	// 秒杀表id
	SeckillId int64 `json:"seckillId" form:"seckillId" `
	// 商品id
	ProductsId int64 `json:"productsId" form:"products_Id" `
	// 库存数量
	StockQuantity int64 `json:"stockQuantity" form:"stockQuantity" `
	// 一对一关联商品
	Products products.Products
}

使用gorm 查询


func GetProductListBySeckillId(seckillId string, page, size int) (utils.PageDto, error) {
	var seckillProducts []SeckillProducts
	var seckillProduct SeckillProducts
	offset := (page - 1) * size // 计算偏移量
	var total int64
	utils.DB.Table("shop_seckill_products").
		Select("shop_products.*, shop_seckill_products.*").
		Joins("left join shop_products on shop_products.product_id = shop_seckill_products.products_id").
		Where("shop_seckill_products.seckill_id = ?", seckillId).Count(&total)
	var err error
	// 执行关联查询
	err = utils.DB.Preload("Products").Take(&seckillProduct).
		Where("shop_seckill_products.seckill_id = ?", seckillId).
		Offset(offset).Limit(size).
		Find(&seckillProducts).Error

	return utils.PageDto{
		Current: page,
		Size:    size,
		Records: seckillProducts,
		Total:   total,
	}, err

}

标签:分页,form,一对一,id,column,json,products,gorm
From: https://www.cnblogs.com/MnysLjj/p/17801917.html

相关文章

  • go gorm 配置日志
    newLogger:=logger.New(log.New(os.Stdout,"\r\n",log.LstdFlags),logger.Config{ SlowThreshold:time.Second,//满阈值 Colorful:true,//日志颜色开启 ParameterizedQueries:false,//sql参数可见,true就是? LogLevel:l......
  • 分页组件
    myproject/app01/utils/pagination.py"""自定义分页组件以后如果想要使用这个分页组件,需要做:在视图函数中:fromapp01.utils.paginationimportPaginationdefprettynum_list(request):#1.根据自己的情况去筛选自己的数据queryset=models.Pr......
  • 分页查询任务列表 支持SQL
    ///<summary>///分页查询任务列表///</summary>///<paramname="where"></param>///<returns></returns>publicPageModel<TaskModel>GetListByPageView(TaskSearchModelwhere){introwCount=0;try......
  • java web jsp 分页显示代码
    <%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%@pageimport="java.sql.*,chap03.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN&qu......
  • SqlServer实现分页查询
    SqlServer实现分页查询1.利用max(主键)--分页查询公式-利用max(主键)selecttop@pageSize*from表名where主键>=(selectmax(主键)from(selecttop((@pageIndex-1)*@pageSize+1)主键from表名orderby主键asc)temp_max_ids)orderby主键;2.利用row_number关键字......
  • Java实现分页的方式有哪些?
    1、手动分页不使用任何框架,用limt分页selectxxfromtab_alimt#{pageNo},#{pageSize}2、RowBounds分页(不推荐)这个是内存分页,它的原理是一次性查出所有数据,然后在内存里进行分页,占内存。3、PageHelper分页(推荐)Mybatis分页插件pom依赖:<dependency><groupId>com.g......
  • 原生分页接口
    packagemainimport( "encoding/json" "gorm.io/driver/mysql" "gorm.io/gorm" "math" "net/http" "strconv")//封装接口返回的三要素:1状态2提示3数据typeApiResponsestruct{ Codeint`json:&......
  • http-template实现原生分页
     packagemainimport( "gorm.io/driver/mysql" "gorm.io/gorm" "html/template" "io" "math" "net/http" "os" "strconv")//商品结构体typeGoodsstruct{ Idint......
  • Springboot+Mybatis+Mybatisplus 框架中增加自定义分页插件和sql 占位符修改插件
    一、Springboot简介springboot是当下最流行的web框架,SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,让这些框架集成在一起变得更加简单,简化了我......
  • 直播软件源码,java数据分页几种方式
    直播软件源码,java数据分页几种方式1.使用PageUtils Service: /**   *分页查询   *   *@paramparams查询条件   *@returnPageUtils   */  PageUtilsqueryPage(Map<String,Object>params);   ServiceImpl: Page<数据库对象实体>pa......