< 返回版块

Ge777 发表于 2020-06-17 22:08

请大神解答

评论区

写评论
zhuxiujia 2020-06-26 12:31

sqlx支持async,await并发高是很不错,但是就是因为太依赖编译期了,所以特别难用(IDE对宏的支持很差的)。 它的驱动其实应该根据链接自动判断数据库类型 数据结构解析应该使用json、serde_json解析,不然又得依赖它一大堆的宏(太可怕了) 它的sql还是原始sql,正确的做法其实应该和Mybatis一样在sql中间插入动态语法动态判断

这里推荐Rbatis这个ORM,相对来说解决了它的某些痛点,但是继承了以上所有优点 https://github.com/rbatis/rbatis

--
👇
biluohc: sqlx帮你搞定数据库返回的数据行和你的结构之间的转换, 它会在编译期检查你的sql和结构.

至于你想要自动生成sql, 其实很容易做成难用的dsl, 比如diesel就做成了呆子, 到头来还是要看实际生成的sql, 最后你会发现, 直接写sql真香, 不用考虑乱七八糟的dsl怎么写才是对的, 生成的sql究竟是什么样的, 调优时又怎么才能生成正确的sql.

当然副作用就是要完全自己写sql, 而且几个sql数据库的sql和映射出来的结构稍有不同.

zhuxiujia 2020-06-26 12:25

推荐Rbatis 是拿sqlx底层的驱动改写而来的。同时和java的mybatis一样好用,且规范 https://github.com/rbatis/rbatis

作者 Ge777 2020-06-20 18:52

那直接用actix pg 不是性能更高? 对以下内容的回复:

solarsail 2020-06-19 00:27

编译期检查挺好用的,并且是连库在线检查,保证 sql 和指定的库的 schema 兼容。错误信息也比 diesel 友好很多。diesel 的错误信息让人联想到 c++ 的模板报错,一个错误半屏幕

作者 Ge777 2020-06-18 13:29

那为何不用actix-pg呢? 对以下内容的回复:

xiaopengli89 2020-06-18 13:26

sql的表达能力不是orm能比的

Ryan-Git 2020-06-18 01:27

他本来的定位就不是 orm

biluohc 2020-06-17 22:27

sqlx帮你搞定数据库返回的数据行和你的结构之间的转换, 它会在编译期检查你的sql和结构.

至于你想要自动生成sql, 其实很容易做成难用的dsl, 比如diesel就做成了呆子, 到头来还是要看实际生成的sql, 最后你会发现, 直接写sql真香, 不用考虑乱七八糟的dsl怎么写才是对的, 生成的sql究竟是什么样的, 调优时又怎么才能生成正确的sql.

当然副作用就是要完全自己写sql, 而且几个sql数据库的sql和映射出来的结构稍有不同.

1 共 8 条评论, 1 页