GoMybatis:Golang 的高性能 SQL Mapper ORM 框架
项目介绍
GoMybatis 是一个专为 Golang 设计的高性能 SQL Mapper ORM 框架。它借鉴了 Java 中的 Mybatis 和 Mybatis Plus 的设计理念,旨在为 Golang 开发者提供一个强大且易用的数据库操作工具。GoMybatis 不仅支持传统的 SQL 操作,还提供了丰富的动态 SQL 功能,使得开发者能够轻松处理复杂的查询和更新操作。
项目技术分析
高性能
GoMybatis 在性能方面表现出色,能够达到每秒 751,020 次查询(Qps/s),总耗时仅为 0.14 秒(测试环境为模拟 SQL 数据,并发 1000,总计 100,000 次查询,6 核 16GB 的 win10 系统)。
无缝迁移
GoMybatis 兼容大部分 Java 的 Mybatis3 和 Mybatis Plus 功能,开发者可以轻松将 Java Spring Mybatis 的 XML SQL 文件迁移到 Go 语言中,只需修改 resultMap
中的 javaType
为指定的 Go 语言类型即可。
事务管理
框架支持声明式事务和 AOP 事务,只需一行标签即可定义 AOP 事务和事务传播行为。
动态 SQL
GoMybatis 提供了 15 种动态 SQL 标签,包括 <select>
、<update>
、<insert>
、<delete>
、<trim>
、<if>
、<set>
、<where>
、<foreach>
、<resultMap>
、<bind>
、<choose><when><otherwise>
、<sql><include>
等,满足各种复杂的 SQL 需求。
智能表达式
框架支持智能表达式处理动态判断和计算任务,例如 #{foo.Bar}#{arg+1}#{arg*1}#{arg/1}#{arg-1}
,甚至可以编写模糊查询 select * from table where phone like #{phone+'%'}
。
动态数据源
GoMybatis 支持自定义多个数据源,并能够动态切换多个数据库实例,适用于多租户或多数据库环境的应用。
模板标签
框架提供了模板标签,只需一行代码即可实现增删改查逻辑、乐观锁等功能,同时保留了完美的扩展性。
乐观锁与逻辑删除
GoMybatis 支持乐观锁和逻辑删除,防止并发竞争修改记录,同时避免意外删除数据,数据恢复简单。
RPC/MVC 组件支持
框架支持 RPC 和 MVC 组件,使得服务完美适配 RPC(减少参数限制),动态代理,事务订阅,易于集成和扩展微服务。
项目及技术应用场景
GoMybatis 适用于各种需要高性能、复杂 SQL 操作的场景,特别是以下几种情况:
- 企业级应用:需要处理大量数据和高并发请求的企业级应用。
- 微服务架构:在微服务架构中,需要与多个数据库交互,GoMybatis 的动态数据源和事务管理功能能够很好地满足需求。
- 数据库迁移:从 Java 迁移到 Golang 的项目,GoMybatis 提供了无缝迁移的解决方案。
- 复杂查询:需要处理复杂查询和动态 SQL 的应用,GoMybatis 提供了丰富的动态 SQL 标签和智能表达式支持。
项目特点
- 高性能:GoMybatis 在性能上表现优异,能够处理高并发请求。
- 无缝迁移:兼容 Java Mybatis,轻松迁移 XML SQL 文件。
- 丰富的动态 SQL:支持 15 种动态 SQL 标签,满足各种复杂查询需求。
- 智能表达式:支持动态判断和计算任务,简化复杂查询的编写。
- 动态数据源:支持自定义多个数据源,动态切换数据库实例。
- 模板标签:简化增删改查逻辑,支持乐观锁和逻辑删除。
- RPC/MVC 支持:完美适配 RPC 和 MVC 组件,易于集成和扩展微服务。
GoMybatis 是一个功能强大且易用的 Golang ORM 框架,无论你是从 Java 迁移到 Golang,还是需要在 Golang 中处理复杂的数据库操作,GoMybatis 都能为你提供强大的支持。快来尝试吧!