easysql:类型安全的查询构造器
easysql是我使用Scala3编写的,一个sql构造器,完全面向对象且类型安全,并且非常轻量,除了语言标准库之外没有任何依赖,下面来简单介绍一下。
easysql使用类似原生sql的dsl来创建查询,与其他同类库或框架不同的是,其不仅可以构建简单查询,复杂查询也不在话下,比如:

上面的较为复杂的查询,也无需使用字符串拼接创建,而是使用纯scala代码,如无意外,我们可以在ide上看到其正确推断出了查询的类型:

上面生成的类型,会在与数据库交互后映射为类似的List结构,这一切都是自动推断的,无需用户手动标注。
使用scala代码而不是字符串创建查询,最大的两个好处是:类型安全和结构化创建。
上面的查询,如果有写错的地方,编译器会返回给我们编译错误,把大部分错误在编译期拒之门外:


easysql还有更多编译期错误检查,让我们构建查询时更加安全。
另外还有一个很大的好处是查询可以结构化创建,比如下面的子查询:

可以看到,我们通过easysql,可以分步骤创建一个复杂查询,无需像真正的sql一样去嵌套,灵活性和可读性都上了一个台阶,并且,可以通过子查询的列名或者别名来推断列的类型,我们使用ide查看一下s2的类型:

可以看到,easysql为我们正确生成了外部查询的类型,并且,如果上面的字段名写错了,也会产生编译错误:

也就是说,easysql的类型安全不是很多同类库或框架的那种浮于表面的安全,而是可以进行更深层次的类型检查,这得益于Scala3强大的类型系统。
以上是对我编写的查询构造器easysql进行的简单介绍,如果大家感兴趣,后续会奉上更详细的使用方法。
谢谢。