【译】ObjectBox官方文档——简介与配置
【译】ObjectBox官方文档——简介与配置
转载请注明出处第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官网:ObjectBox官方示例:Github
简介ObjectBox 是一个移动端方便快速的数据库框架,它让你避免了很多重复的工作,并为你提供简单易用的接口调用。同时他还支持 Kotlin 和 Rxjava
Gradle配置为了在您的 Android 项目中使用 ObjectBox ,您需要添加其 Gradle 插件和依赖库:
1234567891011121314151617181920212223// 在你的根目录 build.gradle 文件:buildscript { ext.objectboxVersion = '1.0.1' // 检查最新版本 repositories { jcenter() maven { url "http://objectbox.net/beta-repo/" ...
【译】ObjectBox官方文档——实体类注解
【译】ObjectBox官方文档——实体类注解
转载请注明出处
第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官方示例:Github
ObjectBox 是一个持久化对象的数据库。为了明确区分,我们有时调用那些持久化对象实体。为了让 ObjectBox 知道哪些类是实体,您可以向它们添加注释。然后 ObjectBox 可以对您的实体执行它的魔法。这里有一个例子:
12345678910@Entitypublic class User { @Id private long id; private String name; @Transient private int tempUsageCount; // not persisted // getters and setters for id and user ...}
@entity注释将Java类用户标识为一个可持久化的实体。ObjectBox会为该类定制生成数据持久化代码。
注意: 将实体类 ...
【译】ObjectBox官方文档——ObjectBox与Kotlin
【译】ObjectBox官方文档——ObjectBox与Kotlin
转载请注明出处第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官网:ObjectBox官方示例:Github
ObjectBox 在 Android 平台上为 Kotlin 提供了完整的支持。这允许使用 Kotlin 类(常规类和data类)来创建实体。通过对 Kotlin 的支持,你可以高效地构建更快的应用程序。
配置配置方式与 java 项目的配置相同,请参阅简介页面。此外,我们提供了一个很小的 Kotlin 扩展函数的依赖库。我们会对它持续更新,所以让我们知道你对它的建议和意见。只需将其添加到模块依赖项:
1234dependencies { compile "io.objectbox:objectbox-android:$objectboxVersion" compile "io.objectbox:objectbox-kotlin:$objectboxVersion" ...
【译】ObjectBox官方文档——查询
【译】ObjectBox官方文档——查询
转载请注明出处第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官网:ObjectBox官方示例:Github
ObjectBox查询会返回符合用户定义标准的实体对象。您可以使用QueryBuilder类来指定标准并创建查询对象。查询类将在实际运行查询后返回与之匹配的对象。
QueryBuilderQueryBuilder<T>允许您为您的实体构建自定义查询。它与实体类生成的属性类一起使用。
这个例子假定有一个实体类User及其生成的属性类User_。
简单的条件示例:在所有用户中查询 first_name 为 “Joe”的用户:1List<User> joes = userBox.query().equal(User_.firstName, "Joe").build().find();
复杂条件示例: 查询 first_name 为“Joe”,在1970年之后出生,last_name 以 “O” 开头的用户12345Quer ...
【译】ObjectBox官方文档——响应式
【译】ObjectBox官方文档——响应式
转载请注明出处第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官网:ObjectBox官方示例:Github
ObjectBox使您的应用程序可以轻松地对数据变化做出反应:
data observers
响应式扩展
Rxjava扩展库
这使得在处理线程细节的同时,可以轻松地设置数据流。
响应式观察者:一个简单的例子让我们从一个示例开始演示如何使用响应式数据观察者:
12Query<Task> query = taskBox.query().equal(Task_.complete, false).build();query.subscribe().on(AndroidScheduler.mainThread()).observer(data -> updateUi(data));//使用Lambda表达式
第一行创建一个常规的Query对象,查询task.complete == false的 Task 对象。第二行将一个观察者连接到 Query ...
【译】ObjectBox官方文档——关系
【译】ObjectBox官方文档——关系
转载请注明出处第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与Realm 和 GreenDAO的对比请查看这篇博客官网:ObjectBox官方示例:Github
在对象中可以引用其他对象,例如,简单的引用对象或者引用一个 List 对象,在数据库术语中,我们称这些引用 关系 。定义关系的对象我们称其为 源对象,我们把引用的对象称之为 目标对象,所以这个关系是有指向性的。
To-One关系使用ToOne类定义 To-One 关系,它是一个针对目标对象的智能代理,会透明地缓存目标对象(?)。例如,一个订单通常由一个客户完成。我们可以对订单类(Order)进行建模并与客户(Customer)建立一个一对一关系:
123456789101112131415161718// Customer.java@Entitypublic class Customer { @Id public long id; } // Order.java@Entitypublic class Order { ...
Python基础——Dict和Set
字典类型(dict)以大括号来舍申明{}
1234567891011>>> x = {'a':1,'b':2,'c':3}>>> print(x['a'])>>> print(x.get('b'))>>> x['a'] = 5>>> print(x['a'])>>> x['z']=9>>> print(x['z'])1259
类似于Java中的map集合,也是用键值对来申明,访问其中的元素需要的不是索引,而是key值。
注意: 通过 key访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。要避免 KeyError 发生,有两个办法:
先判断一下 key 是否存在 ...
Python基础——List与tuple
列表(list)与Java中的list大致相同,更像数组和List的结合体,他可以用下标索引来访问其中的元素,也可以使用倒序索引。追加用 append() ,插入到指定位置insert(),删除用pop(),他也能写成二维数组,三维数组:
12345>>> t = ['a', 'b', ['A', 'B']]>>> t[2][0] = 'X'>>> t[2][1] = 'Y'>>> t['a', 'b', ['X', 'Y']]
它还可以通过相加和乘以整数来合并list,用中括号来声明[]
12345678910>>> x = [1,2,3]>>> y = [4,5,6]>>> print(x[0])1>>> print(x[-1]) # 倒序 ...
Python基础——函数
在Python的函数跟Java中的方法是一个概念,区别在于用法的不同。Python中自带了很多有用的函数, 可以在交互式命令行通过 help(函数名) 查看该函数的帮助信息
123456789>>> help(sum)Help on built-in function sum in module builtins:sum(iterable, start=0, /) Return the sum of a 'start' value (default: 0) plus an iterable of numbers When the iterable is empty, return the start value. This function is intended specifically for use with numeric values and may reject non-numeric types.
Python中定义一个函数的格式如下
12345def my_abs(x): if x >= ...
Python基础——切片
切片就类似于Java中String的subString方法,意思是截取其中的一部分。他只针对有序的序列来操作(list,range,str),语法如下:x[start: end : step](start开始的索引,默认是0,end 结束的索引,但不包含在内,step递增的值默认为1)。range是Python自带的函数,他返回一个一定规律的整数List
12345>>> x = [1,2,3,4,5,6]>>> print(x[1:3:1])>>> print(x[:3:])[1,2,3][2,3]
它也可以通过倒序索引来截取,就算是这样开始的索引也必须是从大到小的来
123>>> L = range(1,10)>>> print L[-5:][5, 6, 7, 8, 9]