Go语言使用sqlx操作数据库的示例详解.docx

Go语言使用sqlx操作数据库的示例详解.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Go语言使用sqlx操作数据库的示例详解

目录安装sqlx类型设计准备连接数据库声明模型执行SQL命令执行SQL查询QueryxQueryRowxGetSelectsqlx.In使用具名参数事务预处理语句不安全的扫描Scan变体控制字段名称映射总结sqlx是Go语言中一个流行的第三方包,它提供了对Go标准库database/sql的扩展,旨在简化和改进Go语言中使用SQL的体验,并提供了更加强大的数据库交互功能。sqlx保留了database/sql接口不变,是database/sql的超集,这使得将现有项目中使用的database/sql替换为sqlx变得相当轻松。

本文重点讲解sqlx在database/sql基础上扩展的功能,对于database/sql已经支持的功能则不会详细讲解。如果你对database/sql不熟悉,可以查看我的另一篇文章《在Go中如何使用database/sql来操作数据库》。

安装

sqlx安装方式同Go语言中其他第三方包一样:

$goget/jmoiron/sqlx

sqlx类型设计

sqlx的设计与database/sql差别不大,编码风格较为统一,参考database/sql标准库,sqlx提供了如下几种与之对应的数据类型:

sqlx.DB:类似于sql.DB,表示数据库对象,可以用来操作数据库。sqlx.Tx:类似于sql.Tx,事务对象。sqlx.Stmt:类似于sql.Stmt,预处理SQL语句。sqlx.NamedStmt:对sqlx.Stmt的封装,支持具名参数。sqlx.Rows:类似于sql.Rows,sqlx.Queryx的返回结果。sqlx.Row:类似于sql.Row,sqlx.QueryRowx的返回结果。

以上类型与database/sql提供的对应类型在功能上区别不大,但sqlx为这些类型提供了更友好的方法。

准备

为了演示sqlx用法,我准备了如下MySQL数据库表:

DROPTABLEIFEXISTS`user`;

CREATETABLE`user`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`name`varchar(50)DEFAULTNULLCOMMENT用户名,

`email`varchar(255)NOTNULLDEFAULTCOMMENT邮箱,

`age`tinyint(4)NOTNULLDEFAULT0COMMENT年龄,

`birthday`datetimeDEFAULTNULLCOMMENT生日,

`salary`varchar(128)DEFAULTNULLCOMMENT薪水,

`created_at`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,

`updated_at`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,

PRIMARYKEY(`id`),

UNIQUEKEY`u_email`(`email`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8COMMENT=用户表;

你可以使用MySQL命令行或图形化工具创建这张表。

连接数据库

使用sqlx连接数据库:

packagemain

import(

database/sql

log

_/go-sql-driver/mysql

/jmoiron/sqlx

funcmain(){

var(

db*sqlx.DB

errerror

dsn=user:password@tcp(:3306)/democharset=utf8mb4parseTime=trueloc=Local

//1.使用sqlx.Open连接数据库

db,err=sqlx.Open(mysql,dsn)

iferr!=nil{

log.Fatal(err)

//2.使用sqlx.Open变体方法sqlx.MustOpen连接数据库,如果出现错误直接panic

db=sqlx.MustO

文档评论(0)

139****7676 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档