Java转Go日记(四十四):Sql构建

1.1.1. 执行原生SQL

复制代码
    db.Exec("DROP TABLE users;")
    db.Exec("UPDATE orders SET shipped_at=? WHERE id IN (?)", time.Now, []int64{11,22,33})

    // Scan
    type Result struct {
        Name string
        Age  int
    }

    var result Result
    db.Raw("SELECT name, age FROM users WHERE name = ?", 3).Scan(&result)

1.1.2. sql.Row & sql.Rows

获取查询结果为*sql.Row*sql.Rows

复制代码
    row := db.Table("users").Where("name = ?", "jinzhu").Select("name, age").Row() // (*sql.Row)
    row.Scan(&name, &age)

    rows, err := db.Model(&User{}).Where("name = ?", "jinzhu").Select("name, age, email").Rows() // (*sql.Rows, error)
    defer rows.Close()
    for rows.Next() {
        ...
        rows.Scan(&name, &age, &email)
        ...
    }

    // Raw SQL
    rows, err := db.Raw("select name, age, email from users where name = ?", "jinzhu").Rows() // (*sql.Rows, error)
    defer rows.Close()
    for rows.Next() {
        ...
        rows.Scan(&name, &age, &email)
        ...
    }

1.1.3. 迭代中使用sql.Rows的Scan

复制代码
    rows, err := db.Model(&User{}).Where("name = ?", "jinzhu").Select("name, age, email").Rows() // (*sql.Rows, error)
    defer rows.Close()

    for rows.Next() {
      var user User
      db.ScanRows(rows, &user)
      // do something
    }
相关推荐
幽络源小助理10 分钟前
《已调试》SpringBoot景区寄存管理系统源码 - 免费JavaWeb项目下载 | 幽络源
java·开发语言·spring boot
Pu_Nine_913 分钟前
JavaScript后端日志系统:使用Winston构建专业日志
后端·express·日志·commonjs·winston
豆沙沙包?14 分钟前
2025年--Lc302-415. 字符串相加--java版
java·开发语言
JIngJaneIL16 分钟前
基于Java民宿管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
杰克尼16 分钟前
蓝桥云课-13. 定时任务
java·开发语言·算法
竹林幽深18 分钟前
集群环境下SSE的解决方案-没试记录一下
java·spring boot·后端
m0_7269659819 分钟前
RAG小实战
开发语言·python
只与明月听23 分钟前
FastAPI入门实战
前端·后端·python
元素之窗24 分钟前
MATLAB 的输入与输出:一篇速查博客
开发语言·matlab·php
CoderYanger31 分钟前
动态规划算法-路径问题:9.最小路径和
开发语言·算法·leetcode·动态规划·1024程序员节