如何优雅的写一篇安利文-以Sugar ORM为例

                                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 ORM为例_第1张图片
项目自己都认为--极致简单的方式处理数据库业务

先来看看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的编写:

如何优雅的写一篇安利文-以Sugar ORM为例_第2张图片
一个Bean的例子

不像GreenDAO,需要专门用桌面工具生成Bean。不需要你写表创建代码,不需要写增删改查的代码(当然业务代码还是要写,他懂你的心情,不懂你的心),就是简单到这个程度。如果属性中有Drawable等不想存入数据库的字段,那么加上@Ignore就好,随心所欲。

配置2步搞定

Sugar的配置只有2处.

1.修改你的AndroidManifest.xml

如图,依此为包括数据库名称、版本、是否打开日志、你的项目包名。别忘了在application标签加上2中重载的Application类参数

如何优雅的写一篇安利文-以Sugar ORM为例_第3张图片
AndroidManifest.xml添加数据库信息

2.为你的Application类添加初始化和销毁。

一个启动,一个关闭。设置好后其他都不需要操心。

如何优雅的写一篇安利文-以Sugar ORM为例_第4张图片
在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』

你可能感兴趣的:(如何优雅的写一篇安利文-以Sugar ORM为例)