Gluttony:Model无需任何处理,即可使用的,超方便Android ORM 数据库框架

说是ORM框架,其实更该说是Android 数据库领域的 DSL 语言。(领域特定语言)
所以用起来自然超简约。

不多说了,Github地址:https://github.com/senyuyuan/Gluttony
文档如下:

Gluttony · 饕餮

Gluttony, a super convenient and simple library to using Android database

饕餮,高效而简约地使用Android数据库

Library is compatible with Kotlin 1.0.5-2 build.

饕餮 兼容 kotlin 1.0.5-2 版本(最新版)

Content · 目录

  • Feature · 特性
  • Install · 安装
  • How to use · 如何使用
    • Configuration · 配置
    • Entities · 实体
    • Save · 保存
    • Find · 查询
    • Update · 更新
    • Delete · 删除
    • Condition · 条件

Feature · 特性

* The core concept, friendly to human, Gluttony will give you the perfect experience
* 核心理念,对人类友好,Gluttony将会给您完美的使用体验
* Automatic table and column naming through reflection
* 通过反射自动建表
* Entities do not need any processing
* 实体类无需任何处理
* The future will provide two kinds of the kernel for your choice, 
  【sqlite】 and 【realm】, the performance of the pursuit of perfection
* 未来将会提供两种内核供您选择,【sqlite】以及【realm】,追求极致的性能

Install · 安装

as a gradle dependency

作为一个gradle依赖库

    compile 'sen.yuan.dao:gluttony:1.1'

How to use · 如何使用

Configuration · 配置

        //configure databaseName,cursorFactory,databaseVersion 
        //配置 数据库名称,cursorFactory,数据库版本
        Gluttony.init(this, GluttonyConfig("gluttony_example",null,1))

In Application or the first Activity, initialize Gluttony.

在Application或是首个Activity中,初始化Gluttony·饕餮。

Entities · 实体

Entities do not need to do any processing.

实体类无需做任何处理。

Gluttony automatically for you to take care of everything.

Gluttony·饕餮 在数据库中自动为您打理好一切。

Annotation: @PrimaryKey is used to specify a PrimaryKey.

注解:@PrimaryKey 用来指定主键。

data class UserData(
        @PrimaryKey
        var id: Int = -1,
        var name: String = "",
        var age: Int = -1,
        var isChildren: Boolean = false
)

Save · 保存

Save Entity directly · 直接保存实体

        val user = UserData()
        user.id = 666
        user.name = "sen"
        user.age = 23
        user.isChildren = false
        user.save()

        //or
        UserData(2, "john", 12, true).save()

Find · 查询

Find Entity based on PrimaryKey · 根据primary key 查询数据

        val user1 = UserData().findOneByKey(666)

Find the first Entity based on Condition · 根据条件 查询第一个数据

        val user2 = UserData().findOne {
            condition {
                "age" between 7..16
                "isChild" Not false
            }
            orderBy("age", SqlOrderDirection.ASC)
        }

Find all Entities based on Condition · 根据条件 查询所有数据,返回值为一个列表

        val userList = UserData().findAll {
            condition {
                "age" moreThan 11
                "name" like "s%"    //find names witch is starting with "s"
            }
        }

Update · 更新

Update Entity directly base on PrimaryKey · 根据primary key 直接更新实体

    var user3 = UserData().findOne { condition { "name" equalsData "lucy" } }!!
        user3.age += 1
        user3.update()
        
        //or
        
        var user4 = UserData(7, "lucy", 10, true)   //user4.id == user3.id · 注意primary key相同
        user4.update()  //user4 will overwrite the old data · 将会覆盖掉旧数据

Update Entity directly or Save Entity when it doesn't exist · 直接 更新或保存实体 (如果实体是未保存过的话)

        var user5 = UserData(90, "white", 77, false)    // 90 is a new primary key
        user5.updateOrSave()    // Gluttony will save a new data

Update Entity based on PrimaryKey · 根据primary key 更新实体

    //update user who id is 90 to named black,age 80
    //lambda
        UserData().updateByKey(90) { arrayOf("name" to "black", "age" to 80) }

        //or pairs
        UserData().updateByKey(90, "name" to "green", "age" to 82)

Update all Entities based on Condition · 根据条件 更新所有实体

    //update user who name is green to name red,age 99
        UserData().update("name" to "red", "age" to 99) {
            condition {
                "name" equalsData "green"
            }
        }

Delete · 删除

Delete Entity directly · 直接删除实体

        var user9 = UserData(90)    //only need primary key
        user9.delete()

Delete Entity based on PrimaryKey · 根据primary key 删除实体

        UserData().deleteByKey(666) //delete user which id is 666

Delete all Entities based on Condition · 根据条件 删除所有实体

    //delete users who is child
        UserData().delete {
            condition {
                "isChild" equalsData true
            }
        }

Clear one Class's entities · 清空一个类的所有实体

        UserData().clear()

Condition · 条件

  • equalsData · 等于

  • moreThan · 大于

  • moreThanOrEquals · 大于等于

  • lessThan · 小于

  • lessThanOrEquals · 小于等于

  • Not · 非

  • In: Determine whether in the array · 判断是否在数组中

  • notIn: Determine whether not in the array

  • between: Determine whether in the range

  • like: fuzzy query · 模糊查询


two marks: % and _ · 两个通配符:% 和 _

% : indefinite amount content · 不定数量的内容

_ : one amount content · 一个位置的内容

for example:    "gluttony%" -> find values witch is starting with "gluttony"

例如,"gluttony%" -> 查询所有以"gluttony"开头的数据

Welcome to staring the project, thanks!
欢迎关注(star)本项目,O(∩_∩)O谢谢!

QQ群:176275050

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容