sqlx的初体验

sqlx的介绍和优点

sqlx 是一个用于 Go 语言的数据库工具,它在标准库的 database/sql 包的基础上提供了一些额外的功能,使得数据库操作更加方便和灵活。

优点:

  1. 查询构建器: sqlx 提供了更强大的查询构建器,使得在 Go 中执行复杂的 SQL 查询变得更加容易。它支持参数化查询、命名参数、以及更复杂的查询语句。
  2. 结构体映射: 通过 sqlx,查询的结果可以直接映射到结构体中。这意味着你可以定义一个结构体,其字段与数据库中的列相对应,sqlx 会自动将查询结果映射到这个结构体,省去了手动扫描和解析的步骤。
  3. Null 值处理: sqlx 对数据库中的 NULL 值进行了更好的处理。它使用 sql.Null* 类型来表示可能为 NULL 的字段,从而提供更安全和可靠的处理方式。
  4. 事务支持: sqlx 提供了更方便的事务管理。你可以通过 sqlx.Beginx 开启一个事务,然后使用该事务执行一系列的数据库操作,最后通过 CommitRollback 来提交或回滚事务。
  5. 数据库驱动支持: sqlx 不仅仅支持标准库的数据库驱动,还提供了对一些流行数据库的支持,例如 PostgreSQL、MySQL、SQLite 等。这使得你可以在不同的数据库之间切换而无需修改太多代码。
  6. 错误处理: sqlx 提供了更多的错误信息,以便更容易地调试和处理数据库操作中的问题。通过 NamedQueryNamedQueryRow 方法,你可以在查询中使用命名参数,并获得更有意义的错误信息。
  7. 性能优化: sqlx 的目标之一是提高执行数据库操作的性能。它通过一些优化和额外的功能,如预处理语句、批量插入等,提供了更好的性能。
  8. 支持原生 SQL: 虽然 sqlx 提供了方便的查询构建器,但你仍然可以使用原生的 SQL 语句,这使得你可以充分发挥 SQL 的强大功能。

sqlx的使用:

引入:

import (
    "fmt"
    "github.com/jmoiron/sqlx"
)

基础连接示例:

package main

import (
	"fmt"
	"github.com/jmoiron/sqlx"
)

var db *sqlx.DB

func initDB() (err error) {
	dsn := "user:password@tcp(127.0.0.1:3306)/sql_demo?charset=utf8mb4¶ms"
	// 也可以使用Mustconnect
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
		fmt.Printf("Connect DB failed, err:%v\n", err)
		return
	}

	db.SetMaxOpenConns(20) //设置最大连接数;
	db.SetMaxIdleConns(10) //设置最大空闲连接数;
	return
}

func main() {
	// 在 main 函数中调用初始化数据库的函数
	if err := initDB(); err != nil {
		fmt.Printf("init DB failed, err:%v\n", err)
	}
	fmt.Println("init DB success")
	// 其他业务逻辑代码
}

查询单条数据,方法名Get

sqlx的初体验_第1张图片

查询多条数据,方法名select

sqlx的初体验_第2张图片

sqlx的初体验_第3张图片

输出:image-20240121190736754

插入数据,关键字Exec

sqlx的初体验_第4张图片

更新数据,关键字Exec

sqlx的初体验_第5张图片

删除数据,关键字Exec

sqlx的初体验_第6张图片
至于为什么在前期写项目时不用gorm
1.gorm运行时虽然安全性更高,但消耗资源较多
2.gorm不利于初学者练习sql语句,在面试中很少会问gorm的相关知识,而是会考一些写sql能力,所以最好能在平时开发中就练习;

你可能感兴趣的:(gin,数据库)