A robust, powerful, and very simple ORM android database library with annotation processing.
The library is built on speed, performance, and approachability. It not only eliminates most boiler-plate code for dealing with databases, but also provides a powerful and simple API to manage interactions.
Let DBFlow make SQL code flow like a steady stream so you can focus on writing amazing apps.
What sets this library apart:
- Many, many unit tests on nearly every feature.
- Built on maximum performance using annotation processing, lazy-loading, and speed-tests here
- Built-in model caching for blazing fast retrieval and ability to define own cache.
- Powerful and fluid SQL-wrapping statements
- Triggers, Views, Indexes, and many more SQLite features.
- Seamless multi-database support.
- Direct-to-database parsing for data such as JSON
- Flexibility in the API enabling you to override functionality to suit your needs.
ContentProvider
generation using annotations
If you wish to have your application featured here, please file an issue.
- Anonymous 1: An application that has over 1.5 million active installs
- Anonymous 2: An application that will have over 1 million active installs
- University of Oslo DHIS2 Android SDK
- Library now is on jCenter()/bintray!
- Full Enum Support. Note: they must be standard columns. We do not support foreign key or primary key for enums.
- Can now define inherited properties to use as columns. Note: They can only be normal, accessible to the subclass columns for now. Just
define
@Table(inheritedColumns = {@InheritedColumn(column = @Column, fieldName = "fieldName")}
. - Bug Fixes, readme enhancements, Logging Improvements, and improved code commenting
- Function support for SQLite methods in a condition such that
date(myColumn1)=1433872730
can be written asCondition.columnsWithFunction("date", "myColumn1").eq(1433872730)
- Fixed an issue where
Condition
instead ofSQLCondition
were leftover as a param in a few methods.
- Massive, massive changes to the library.
- For all changes, check out the migration guide here
for older changes, from other xx.xx versions, check it out here
For more detailed usage, check out these sections:
Tables and Database Properties
SQL Statements Using the Wrapper Classes
Listed here are tutorial screen casts for DBFlow. If more are created, they may go into the usage docs.
- DFlow-Installing by @tsuharesu
Add the library to the project-level build.gradle, using the apt plugin to enable Annotation Processing:
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
apt 'com.raizlabs.android:DBFlow-Compiler:2.1.0'
compile "com.raizlabs.android:DBFlow-Core:2.1.0"
compile "com.raizlabs.android:DBFlow:2.1.0"
}
We only use reflection pretty much one time throughout the whole library, so this class is the only one needed.
For GSON
and RetroFit
compatibility check out #121.
Due to this library using a custom maven repo, to speed up build times when using this library,
you should run in --offline
mode except for when updating dependencies. To enable
this setting in Android Studio, ensure the option is checked in:
Preferences->Build,Executor,Deployment->Build Tools->Gradle->Offline Work
I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request. Here are some basic rules to follow to ensure timely addition of your request:
- Match coding style (braces, spacing, etc.) This is best achieved using CMD+Option+L (Reformat code) on Mac (not sure for Windows) with Android Studio defaults.
- If its a feature, bugfix, or anything please only change code to what you specify. DO NOT do this: Ex: Title "Fixes Crash Related to Bug" includes other files that were changed without explanation or doesn't relate to the bug you fixed. Or another example is a non-descriptive title "Fixes Stuff".
- Pull requests must be made against
develop
branch. - Have fun!