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
    }
相关推荐
带土114 分钟前
4. C++ static关键字
开发语言·c++
C++ 老炮儿的技术栈21 分钟前
什么是通信规约
开发语言·数据结构·c++·windows·算法·安全·链表
@大迁世界24 分钟前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
栗子叶30 分钟前
Java对象创建的过程
java·开发语言·jvm
勇哥java实战分享35 分钟前
短信平台 Pro 版本 ,比开源版本更强大
后端
Amumu1213839 分钟前
React面向组件编程
开发语言·前端·javascript
学历真的很重要39 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
IT=>小脑虎40 分钟前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
wjs202442 分钟前
C 标准库 - `<float.h>》详解
开发语言
计算机毕设VX:Fegn089542 分钟前
计算机毕业设计|基于springboot + vue二手家电管理系统(源码+数据库+文档)
vue.js·spring boot·后端·课程设计