Android数据库居然可以如此轻巧
-Sugar ORM简单指南
Android下的数据库操作一直是一个比较令人头疼的事,如果用原生编写,那么除了数据库连接、版本升级、基础查询等几个基本功能可打包复用外,业务逻辑从Schema到增删改查都必须重写一遍。而更多的时候,我项目的数据库业务逻辑其实并没有那么高的性能要求和复杂度,因此,选择一款ORM库代替,是一件极为明智的选择。
恰似柳暗花明
目前Android ORM开源项目中,最知名、应用最广泛的是GreenDAO,它出自著名的greenrobot(就是写EventBus的那群大神),常年排在Github Android ORM榜单的第一位,其优缺点网上已有众多文章深入解读,这里不再深入。
结合我自身业务需求,GreenDAO仍然显得太重了--它需要用JAVA桌面程序生成Model(其实是因为JAVA我只会android啊..这不是要我命么),因此我一直采用原生的方式处理数据库业务逻辑,直到内心崩溃。到Github又趴了一遍,结果立马就深深爱上了排名第二的Sugar ORM并立即运用到项目中。
Sugar ORM特性
简单,就是对Sugar最高的评价。KISS(Keep it simple and stupid)原则最完美的展现,需要经验丰富的代码重构才能做到。我一直是ORM的忠实拥趸者,我首先考虑快速开发,从不考虑性能。从Entity FrameWork到Eloquent ORM再到Sugar ORM,虽然Sugar没有前两者强大,但是我觉得已经足够,为什么?
项目自己都认为--极致简单的方式处理数据库业务先来看看Sugar的介绍里面自己是怎么说的:
A simple, concise, and clean integration process with minimal configuration.
(用最少的配置实现最简单、明了、畅快的集成过程)
Automatic table and column naming through reflection.
(采用反射的方式无须干预自动生成表和字段)
Support for migrations between different schema versions.
(支持不同版本数据库集合的迁移)
那么Sugar的集成,到底简单到什么程度呢。看看Bean的编写:
一个Bean的例子不像GreenDAO,需要专门用桌面工具生成Bean。不需要你写表创建代码,不需要写增删改查的代码(当然业务代码还是要写,他懂你的心情,不懂你的心),就是简单到这个程度。如果属性中有Drawable等不想存入数据库的字段,那么加上@Ignore就好,随心所欲。
配置2步搞定
Sugar的配置只有2处.
1.修改你的AndroidManifest.xml
如图,依此为包括数据库名称、版本、是否打开日志、你的项目包名。别忘了在application标签加上2中重载的Application类参数
AndroidManifest.xml添加数据库信息2.为你的Application类添加初始化和销毁。
一个启动,一个关闭。设置好后其他都不需要操心。
在Application中添加Sugar环境设置想早点下班,用QueryBuilder
ORM最强大的地方体现在OOP原则的查询操作上,Sugar把增删改查都给你封好了。因为足够简单,所以就以查询为例,包含:
1.Id查询,findById
2.简单Sql语句查询,find
3.复杂Raw语句查询,findWithQuery
3.数量查询,count
不用写一长串代码,一句话搞定复杂点的业务逻辑,写好Sql语句,用executeQuery或者findWithQuery执行,选哪个函数看你心情,开心就好。倒是有一个需要注意的坑,Sugar有一个命名规范约定,如果字段以驼峰命名法命名,需要改为下划线命名法,如“testUnderscore”需要改为“test_underscore”。不过你也不必过于担心,Sugar已经提供了函数StringUtil.toSQLName("testUnderscore"),自动帮你转换命名。
我不知道你,反正我就他了
其实在刚开始做Android开发时,用到国内大神写的xUtils框架时就已经较浅的了解ORM了,但是后来放弃坚持用原生写所有代码。由于疏于了解,只知道GreenDAO,但是用起来过于麻烦。发现Sugar之后,各种数据也不打算存Preference了,我仍然坚持不打算用Annotation库,但Sugar肯定会用在之后的每一个项目。因为简单,可以把更多的精力放在业务逻辑上,这不正是开源社区的思想么。我不知道你,反正我就他了。
相关资料
项目地址:https://github.com/satyan/sugar
文档:http://satyan.github.io/sugar/getting-started.html
‘2016-6-16更新
在使用中发现,sugar自android-studio2.1(看issue可能是gradle版本原因)会无法初始化model的数据表,所以不再推荐此轮子,建议转为liteORM或者realm!!
欢迎加App独立开发群 『533838427』
网友评论