db.Model(&User{}).Create([]map[string]interface{}{ {"Name": "jinzhu_1", "Age": 18}, {"Name": "jinzhu_2", "Age": 20}, })
时间: 2023-08-14 19:07:16 浏览: 130
这是一个使用 GORM 库创建 User 模型并插入多条记录的示例代码。首先,我们使用 `db.Model(&User{})` 来指定要操作的模型是 User,接着使用 `Create([]map[string]interface{}{})` 方法来创建并插入多条记录。
在这个示例中,我们创建了两个 User 记录,一个名为 "jinzhu_1",年龄为 18,另一个名为 "jinzhu_2",年龄为 20。这些记录将会被插入到数据库中。
相关问题
[]map[string]interface{}{ {"Name": "jinzhu_1", "Age": 18}, {"Name": "jinzhu_2", "Age": 20}, }
这是一个包含两个元素的切片,每个元素都是一个字典。每个字典表示一个 User 记录,包含 Name 和 Age 两个字段。
第一个元素:
- Name: "jinzhu_1"
- Age: 18
第二个元素:
- Name: "jinzhu_2"
- Age: 20
这个切片可以用于创建并插入多条 User 记录到数据库中。
func AppOperateRecharge(a *decorator.ApiBase) error { logger.AccessLogger.Info("AppOperateRecharge...") resp := adminStruct.BusinessOrderRecharge{} a.Ts.Table("business_base as a"). Select('a.bid, a.bname, a.acct_bal, a.buy_Sum_Amt, a.'). Where("a.link_id=? and a.user_type=?", a.Token.LinkId, a.Token.UserType) return a.ReturnSuccessCustomResponse(resp) }查询多个表数据并储存到这个结构体使用joins关联表账面余额采购货款商家id在business_bal表管理员姓名商家状态在user_base表,管理员在business_base表商家名称在user_base表,表里都有一个一样的id待结算金额和已结算金额需要查某一个表里前端传回来的同一个id某一个字段状态为1的关联字段数据总和type BusinessOrderRecharge struct { Bid int64 json:"bid" // 商家ID Bname string json:"bname" // 商家名称 Acct_Bal int64 json:"acct_Bal" //账面余额 Buy_sum_amt int64 json:"buy_Sum_Amt" //采购货款 Unpaid_amt int64 json:"unpaid_Amt" //待结算货款 Stmt_amt int64 json:"stmt_Amt" //已结算金额 Admin_uid int64 json:"admin_Uid" //管理员 Admin_name string json:"admin_name" //管理员姓名 Status string json:"status" //商家状态
根据你提供的要求,修改后的代码如下所示:
```go
import (
"github.com/jinzhu/gorm"
)
type BusinessOrderRecharge struct {
Bid int64 `json:"bid"` // 商家ID
Bname string `json:"bname"` // 商家名称
Acct_Bal int64 `json:"acct_Bal"` // 账面余额
Buy_sum_amt int64 `json:"buy_Sum_Amt"` // 采购货款
Unpaid_amt int64 `json:"unpaid_Amt"` // 待结算货款
Stmt_amt int64 `json:"stmt_Amt"` // 已结算金额
Admin_uid int64 `json:"admin_Uid"` // 管理员
Admin_name string `json:"admin_name"` // 管理员姓名
Status string `json:"status"` // 商家状态
}
func AppOperateRecharge(a *decorator.ApiBase) error {
logger.AccessLogger.Info("AppOperateRecharge...")
resp := BusinessOrderRecharge{}
// 查询商家名称和账面余额
err := a.Ts.Table("business_base as a").
Joins("INNER JOIN user_base as b ON a.bid = b.bid").
Select("a.bid, b.bname, a.acct_bal").
Where("a.link_id = ? AND a.user_type = ?", a.Token.LinkId, a.Token.UserType).
Scan(&resp).Error
if err != nil {
return err
}
// 查询采购货款
err = a.Ts.Table("business_bal").
Select("buy_sum_amt").
Where("id = ?", a.Token.ID).
Scan(&resp).Error
if err != nil {
return err
}
// 查询待结算金额总和
unpaidQuery := "SELECT SUM(unpaid_column_name) FROM table_name WHERE id = ? AND status = 1"
var unpaidAmt int64
err = a.Ts.Raw(unpaidQuery, a.Token.ID).Scan(&unpaidAmt).Error
if err != nil {
return err
}
resp.Unpaid_amt = unpaidAmt
// 查询已结算金额总和
stmtQuery := "SELECT SUM(stmt_column_name) FROM table_name WHERE id = ? AND status = 1"
var stmtAmt int64
err = a.Ts.Raw(stmtQuery, a.Token.ID).Scan(&stmtAmt).Error
if err != nil {
return err
}
resp.Stmt_amt = stmtAmt
// 查询管理员姓名和商家状态
err = a.Ts.Table("business_base").
Select("admin_uid, admin_name, status").
Where("link_id = ? AND user_type = ?", a.Token.LinkId, a.Token.UserType).
Scan(&resp).Error
if err != nil {
return err
}
return a.ReturnSuccessCustomResponse(resp)
}
```
请将 `unpaid_column_name` 替换为待结算金额字段的列名,`stmt_column_name` 替换为已结算金额字段的列名,`table_name` 替换为包含这些字段的表名。
在代码中,首先使用 `INNER JOIN` 进行表的关联,并查询商家名称和账面余额。接下来,分别查询采购货款、待结算金额总和和已结算金额总和。最后,查询管理员姓名和商家状态。
请根据实际情况修改列名和表名,并确保已导入所需的包和依赖项。另外,在实际应用中,应对用户输入的 ID 进行适当的验证和防止 SQL 注入攻击的处理。
阅读全文