Ge777 发表于 2020-06-17 22:08
请大神解答
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和映射出来的结构稍有不同.
推荐Rbatis 是拿sqlx底层的驱动改写而来的。同时和java的mybatis一样好用,且规范 https://github.com/rbatis/rbatis
那直接用actix pg 不是性能更高? 对以下内容的回复:
编译期检查挺好用的,并且是连库在线检查,保证 sql 和指定的库的 schema 兼容。错误信息也比 diesel 友好很多。diesel 的错误信息让人联想到 c++ 的模板报错,一个错误半屏幕
那为何不用actix-pg呢? 对以下内容的回复:
sql的表达能力不是orm能比的
他本来的定位就不是 orm
sqlx帮你搞定数据库返回的数据行和你的结构之间的转换, 它会在编译期检查你的sql和结构.
评论区
写评论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和映射出来的结构稍有不同.
推荐Rbatis 是拿sqlx底层的驱动改写而来的。同时和java的mybatis一样好用,且规范 https://github.com/rbatis/rbatis
那直接用actix pg 不是性能更高? 对以下内容的回复:
编译期检查挺好用的,并且是连库在线检查,保证 sql 和指定的库的 schema 兼容。错误信息也比 diesel 友好很多。diesel 的错误信息让人联想到 c++ 的模板报错,一个错误半屏幕
那为何不用actix-pg呢? 对以下内容的回复:
sql的表达能力不是orm能比的
他本来的定位就不是 orm
sqlx帮你搞定数据库返回的数据行和你的结构之间的转换, 它会在编译期检查你的sql和结构.
至于你想要自动生成sql, 其实很容易做成难用的dsl, 比如diesel就做成了呆子, 到头来还是要看实际生成的sql, 最后你会发现, 直接写sql真香, 不用考虑乱七八糟的dsl怎么写才是对的, 生成的sql究竟是什么样的, 调优时又怎么才能生成正确的sql.
当然副作用就是要完全自己写sql, 而且几个sql数据库的sql和映射出来的结构稍有不同.