一、介绍
Rust没有像java那样完整的orm框架,对数据库进行操作比较麻烦。但也正是因为如此,才使得我对Mybatis的自动创建表有所了解,学java的时候只知道Mybatis很厉害,但是完全不会管原理是怎么样的。
二、实现
目前我掌握了两种Rust库来实现这个功能:diesel 和 rusqlite ,diesel 可以使用mysql sqlite postgres 三种数据库,rusqlite只能使用sqlite。首先介绍diesel
diesel
diesel官方提供了入门手册,内容也基本涵盖了对数据库的所有操作,跟着教程走一遍基本就知道原理是什么了。diesel对数据库操作的流程就是:
首先创建.env文件,在文件中指定DATABASE_URL,运行diesel setup命令,diesel_cli会根据这个url创造一个数据库。
数据库创建完成后,运行"diesel migration generate create_posts(这个名字自取)"命令,项目中会自动创建up.sql ,down.sql 文件,在up.sql中写入需要创建的表结构,down.sql 写入drop table ...
然后根据需要操作的数据结构,将该数据结构封装为三个struct,两个写在model.rs中,一个写在在schema.rs中。
models.rs
//这个是用于给表query的struct,这个需要将表的所有字段都写上
#[derive(Queryable)]
pub struct Post {
pub id: i32,
pub title: String,
pub body: String,
p