并非所有开发者都需要功能复杂、学习成本高昂的数据库框架。jorm的专业级功能配置得恰到好处,简洁的API能帮你轻松完成数据操作,又不会因为配置过于复杂令人望而却步。
这款轻量级的ORM库是进行CRUD操作、链式查询、事务管理的快捷工具。它还提供了模型绑定、SQL缓存、连接池等丰富的功能特性,以及非侵入式的钩子系统,让你在业务逻辑中仍可灵活控制数据流程。
- 轻量高效:核心依赖最少,代码精简,性能优化
- 链式操作:流畅的 API 设计,支持链式调用
- 类型安全:基于反射的动态类型处理,编译时检查
- 多数据库支持:支持 MySQL、PostgreSQL、SQLite、Oracle、SQL Server
- 事务管理:提供函数式事务支持,自动提交/回滚
- 钩子函数:支持 Before/After 操作钩子
- 连接池:内置连接池管理,支持重试机制
- 自动迁移:支持基于模型的表结构自动创建和更新
- 关联预加载:支持 BelongsTo、HasOne、HasMany、ManyToMany 关系预加载
- 数据验证:内置数据验证器,支持多种验证规则
- Context 支持:支持超时控制和操作取消
go get github.com/shrek82/jormpackage main
import (
"github.com/shrek82/jorm/core"
_ "github.com/mattn/go-sql-driver/mysql"
)
type User struct {
ID int64 `jorm:"pk;auto"`
Name string `jorm:"size:100 notnull"`
Email string `jorm:"size:100 unique"`
CreatedAt time.Time `jorm:"auto_time"`
}
func main() {
db, err := core.Open("mysql", "user:password@/dbname", &core.Options{
MaxOpenConns: 10,
MaxIdleConns: 5,
})
if err != nil {
panic(err)
}
defer db.Close()
db.AutoMigrate(&User{})
user := &User{Name: "Alice", Email: "alice@example.com"}
id, _ := db.Model(user).Insert(user)
fmt.Println("Inserted ID:", id)
}查看 docs/ 目录获取完整的使用手册:
- 快速开始
- 数据库连接
- 模型定义
- 查询操作
- 插入操作
- 更新操作
- 删除操作
- 事务处理
- 钩子函数
- 关联关系
- 数据验证
- 迁移管理
- 日志配置
- Context支持
- 原生SQL
- 错误处理
- 性能优化
- 最佳实践
- 中间件实践
MIT License
欢迎提交 Issue 和 Pull Request!