一个以注解方式实现的ORM数据库解决方案,基于 source_gen
1、创建你的实体类并以*_entity.dart作为文件名,编译后生成的数据库操作文件将以*.entity.dao.dart命名 例:
你的实体类文件: student_entity.dart
编译后生成的数据库操作类文件: student_entity.dao.dart
2、使用 @Entity 注解你的 实体类 ,并且 nameInDb属性来定义其在数据库中的表名。 propertyList 的类型为List,通过他来定义表中的字段 注意表中字段名,必须与实体类中的属性名一一对应
例:
@Entity(nameInDb:'student',propertyList:[Property(name:'name',type:PropertyType.STRING)])
class StudentEntity{
String name;
}
3、实体类必须拥有主键,并在 @Property 注解中通过 isPrimary=true 来声明这个属性为主键
@Entity(nameInDb:'student',
propertyList:[
Property(name:'name',type:PropertyType.STRING),
Property(name:'id',type:PropertyType.INT,isPrimary:true),
])
class StudentEntity{
String name;
int id;
}
4、通过命令来生成数据库操作文件,在命令行中输入下面的命令 flutter packages pub run build_runner build
5、编译后生成的数据库操作文件中包含当前表的创建、增删改查等方法,在项目中使用需要先进行数据库的初始化
///导入数据库管理类
import 'package:yun_dao/db_manager.dart';
///传入数据库版本、数据库路径以及数据库名称来初始化数据库,DBManager为单例,每次创建拿到的都是同一个
DBManager dBManager = DBManager();
dBManager.initByPath(1,“dbPath”,"dbName");
///你也可以使用默认路径来初始化数据库 默认的路径为 getDatabasesPath()
dBManager.init(1,"dbName");
6、在项目中调用生成的数据库操作文件的 init() 方法来创建表, init() 方法中会做相应的判断不会重复创建表格
StudentEntityDao.init();
7、然后就可以在项目中方便的进行数据库的增删改查操作了,所有的数据库操作方法都是静态
StudentEntityTable.queryAll();
StudentEntityTable.insert(StudentEntity());
8、你也可以通过构造查询器来查询数据
List list = await StudentEntityDao.queryBuild()
.where(StudentEntityDao.NAME.equal("李四"))
.where(StudentEntityDao.AGE.equal(2))
.list();
dev_dependencies:
yun_dao: 0.0.4