Go_sqlx和占位符

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go_sqlx和占位符相关的知识,希望对你有一定的参考价值。

sqlx使用

第三方库sqlx能够简化操作,提高开发效率。

安装

go get github.com/jmoiron/sqlx
package main

import (
	"fmt"

	"github.com/jmoiron/sqlx"

	_ "github.com/go-sql-driver/mysql" // init()
)

// Go连接MySQL示例

var db *sqlx.DB // 是一个连接池对象

func initDB() (err error) {
	// 数据库信息
	// 用户名:密码@tcp(ip:端口)/数据库的名字
	dsn := "root:root@tcp(127.0.0.1:3306)/sql_test"
	// 连接数据库
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
		return
	}
	db.SetMaxOpenConns(10) // 设置数据库连接池的最大连接数
	db.SetMaxIdleConns(5)  // 设置最大空闲连接数
	return
}

type user struct {
	ID   int
	Name string
	Age  int
}

func main() {
	err := initDB()
	if err != nil {
		fmt.Printf("init DB failed, err:%v
", err)
		return
	}
	sqlStr1 := `select id, name, age from user where id=1`
	var u user
	db.Get(&u, sqlStr1) //通过反射知道u有什么字段
	fmt.Printf("u:%#v
", u)

	var userList []user
	sqlStr2 := `select id,name, age from user`
	err = db.Select(&userList, sqlStr2)
	if err != nil {
		fmt.Printf("select failed, err:%v
", err)
		return
	}
	fmt.Printf("userList:%#v
", userList)
}

SQL中的占位符

不同的数据库中,SQL语句使用的占位符语法不尽相同。

数据库占位符语法
MySQL ?
PostgreSQL $1$2
SQLite ? 和$1
Oracle :name

以上是关于Go_sqlx和占位符的主要内容,如果未能解决你的问题,请参考以下文章

text 占位符和条件布局的模板代码

在代码片段中包含类型转换

占位符可见总是假的

(源码,具体的细节请查阅相关资料)哈弗曼树的构造以及非递归遍历树

根据节点在前一节点中出现的顺序,在节点中按顺序编号占位符

android - 调整片段大小