跟 C# 的 EF Core 比,MyBatis 最多算一个 SQL Builder 。
好的 ORM 应该尽可能减少 SQL 的书写,尽量自动化,尽量贴近语言原生语法。
看过 C# 的 Entity Framework 、Ruby 的 Active Record 、php 的 Eloquent 、Typescript 的 MikroORM 、kotlin 的 Ktorm
才知道什么是好用的 ORM 。相比之下 Java 、go 生态下缺少好用的 ORM 框架。
优雅的 ORM (EF Core)是这么更新的:
using (var context = new BloggingContext())
{
var blog = context.Blogs.Single(b => b.Url == "
http://example.com");
blog.Url = "
http://example.com/blog";
context.SaveChanges();
}
使用 C# LINQ 表达式写查询,直接修改 blog.URL 的值再保存修改,真正的面向对象、真正的自动化,开发人员甚至不需要深入了解 SQL ,极大减轻了开发时的负担;
GORM 是这么更新的:
db.Model(Blog{}).Where("Url = ?", "
http://example.com").Updates(Blog{Url: "
http://example.com/blog"})
在 gorm 自身的语法 "db.Model().Where().Updates()"之中混入半句 sql "url = ? ",这就要求开发人员既要会 sql 也要熟悉 gorm 额外的语句,开发时的性质负担并没有减少;