介绍
rbatis是一个类似于Mybatis的orm框架,其价值不在于作为一个orm框架使用而是其原理:1.编译xml 2.生成rust代码 3.执行rust代码,rbatis支持三种方式的sql:1.html sql,sql在一个xml中 2.pysql,sql通过注解 3.raw sql,原始的sql。下面以html sql为代表进行记录。
代码
https://gitcode.net/chenhuaijin123/rbatis
html sql流程
1.编译html----html_parser库
测试在tests/parse_html.rs中,以最简单的test_parse_line_feed来进行分析quote库的使用
2.生成tokenstream--quote库
生成#py_sql宏生成rust代码核心为 impl_macro_py_sql
生成代码(tokenstream)的核心实现在codegen/parser_html.rs的parse方法中
3.执行生成的sql,src/executor.rs中
4. 类型转换,未用反射,通过编译期来解决问题。