{"repo":"bunnier/sqlmer","free":true,"listed":false,"github":"https://github.com/bunnier/sqlmer","clone":"git clone https://github.com/bunnier/sqlmer.git","description":"一个面向原生 SQL 的轻量化 Go 数据库操作库。保留 SQL 的灵活性，同时提供命名参数、轻量化 ORM 映射、事务、类型转换等高频能力，适合希望避免重 ORM 约束、但又不想手写大量样板代码的项目。目前支持 MySQL / SQLite / SQL Server。","language":"Go","stars":10,"topics":["sql","golang","named-parameters","orm","sqlite","database","lightweight","mysql","sql-first","sql-mapping"],"license":"MIT","category":"databases-storage","readme_excerpt":"sqlmer 一个面向原生 SQL 的轻量化 Go 数据库操作库。保留 SQL 的灵活性，同时提供命名参数、轻量化 ORM 映射、事务、类型转换等高频能力，适合希望避免重 ORM 约束、但又不想手写大量样板代码的项目。 功能简介 sqlmer 不是重 ORM，也不是 SQL Builder，而是一个面向原生 SQL 的轻量化数据库操作库。它在 database/sql 之上补充了统一的驱动适配、参数处理、轻量化 ORM 映射、事务和装饰器扩展能力，让你在继续直接写 SQL 的同时，也能方便地把结果装载到 Map 或 Struct。它已在实际生产环境中长期使用，并经过了持续验证，目前支持 MySQL / SQLite / SQL Server 。 适合什么场景 - 希望继续直接写 SQL，而不是切换到 DSL / 重 ORM； - 需要命名参数、 IN 查询展开、Map / Struct 映射等高频能力； - 希望事务和非事务场景保持一致的 API 体验； - 想在 database/sql 之上补足常用能力，同时保留驱动层面的可控性。 快速上手 如果上面的场景描述和你的需求接近，可以先看下面这个最小例子，快速感受 sqlmer 的使用方式： 这个例子同时体现了 sqlmer 的几个核心能力： - 保留原生 SQL； - 支持命名参数； - 支持 slice 直接用于 IN 查询； - 支持将结果直接映射到 Go struct； - 不需要手写 rows.Scan(...) 等重复样板代码。 核心特性 - 面向原生 SQL ：核心交互以原生 SQL 语句为基础，提供灵活的结果映射能力，让数据库操作更加简单高效； - 增强的参数处理 ：提供了直观的 命名参数 和 索引参数 语法，其中 命名参数 支持使用 map/struct 作为参数，并允许参数重写，让 SQL 及参数更易维护和重用； - 轻量化 ORM 体验 ：支持将查询结果灵活映射为 Map 或类型安全的结构体，并提供智能的字段匹配机制，让数据操作更加简单直观； - 一致的接口设计 ：提供了直观统一的数据交互接口，事务和非事务操作保持一致的使用体验； - 增强的原生接口 ：针对原生 API 爱好者，也提供了增强的 sql.Rows/sql.Row，增加了自动检测列类型和数量的能力，可智能地将数据 Scan 到合适的类型，轻松装载到 Map 或 Slice； - 强大的事务支持 ：提供了支持嵌套使用的事务 API，优雅地处理复杂的事务场景； - 便捷的 IN 查询 ：支持直接传递 slice/array 类型参数到 IN 子句，无需手动拼接语句； - 灵活的装饰器模式 ：通过 wrap 包提供的装饰器模式，可以轻松注入慢日志、监控指标、链路追踪等自定义逻辑，让系统监控和诊断更加便捷； - 智能的连接管理 ：根据数据库配置自动初始化连接生命周期（该特性仅支持 MySQL）； 下面的示例按能力分组组织，建议按 参数处理 - 结果映射 - 增强 Rows / Row - 事务 - 装饰器扩展 的顺序浏览，更容易快速理解 sqlmer 的整体使用方式。 本小节完整例子：example 获取 sqlmer 连接数据库 首先，让我们创建一个数据库连接。sqlmer 提供了统一的接口设计，无论是 MySQL / SQLite / SQL Server，都可以使用相同的 API 进行操作。 参数绑定与 IN 查询 sqlmer 支持命名参数、位置参数，以及 map / struct / 索引参数 的自动合并。配合","default_branch":null,"files":null,"tree":[],"storefront":"/r/bunnier","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/bunnier/sqlmer/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}