LitePal:简单易用的数据库创建工具 (litepal 创建数据库)

LitePal是一款用于Android平台的数据库创建工具,它提供了简单易用的API,使得开发者可以更快、更简便地创建和管理数据库。LitePal的特点在于其简化了SQL语句的编写过程,同时也提供了一个轻量级的ORM框架,以便于管理数据库中的数据对象。

SQLite作为Android系统自带的数据库,其使用简单、轻量、运行速度快等优点被广泛地应用于开发过程中。而LitePal的目的就是简化SQLite的使用,在这一点上,LitePal的表现无疑是十分优秀的。具有以下几个特点:

1.简单易用

LitePal提供了非常简单易用的API,使得开发者可以通过少量的代码快速创建和管理数据库。然而,LitePal并不会破坏SQLite原生API的逻辑,它只是简化了这些API的使用方式,使得这些API更加易于理解和应用。

比如,开发者只需要使用以下类似的代码就可以创建一个数据库。

“`

LitePal.initialize(context);

“`

或者创建一个数据表,只需要在实体类中添加注解,如下所示:

“`

public class Book extends LitePalSupport {

@Column(unique = true)

private String title;

@Column

private String author;

@Column

private double price;

// getters and setters

}

“`

如上所示,只需在实体类中添加注解即可将实体类映射到数据库表中。从而简单易用的API使得开发者的工作变得更加方便。

2.简化SQL语句

使用原生SQLite API开发,需要手动编写复杂的SQL语句,而这些语句对于开发者而言是相当繁琐和易错的。使用LitePal后,开发者就可以完全避免使用SQL语句,而是采用更为直观的对象调用方式,比如:

“`

// 插入一条数据

Book book = new Book();

book.setTitle(“Android Programming”);

book.setAuthor(“Bill Gates”);

book.setPrice(79.9);

book.save();

“`

实际上,LitePal会自动转换成SQL语句执行相应的数据操作,这就让开发者的工作变得轻松了很多。

3.提供ORM框架

LitePal提供了轻量级的ORM框架,使得开发者可以更好地管理数据库中数据对象。ORM框架可以将数据对象转换为Java对象,从而使得开发者可以更方便地操作这些数据对象,并且框架还提供了多种操作方法,比如查询、删除等等,从而让开发者的工作变得更加高效和方便。

例如,开发者可以使用以下代码查询数据库中的所有数据对象:

“`

List books = LitePal.findAll(Book.class);

“`

如上所示,LitePal提供了一个简单的方法,只需通过传入相应的数据对象类型即可查询数据库中的所有数据对象。这样的操作体验让开发者的工作变得更加简单。

相关问题拓展阅读:

android开发一般都使用什么框架

开源框架推荐:

网络

* (square/okhttp · GitHub)

* (loopj/android-async-http · GitHub)

事件总线

* (square/otto · GitHub)

* (greenrobot/EventBus · GitHub)

依赖注入

* (square/dagger · GitHub)

* (roboguice/roboguice · GitHub)

* (JakeWharton/butterknife · GitHub)

图片

* (facebook/fresco · GitHub)

* (bumptech/glide · GitHub)

* (square/picasso · GitHub)

数据库

* (greenrobot/greenDAO · GitHub)

* (j256/ormlite-android · GitHub)

* (LitePalFramework/陆扰毁LitePal · GitHub)

响应式编程

* (ReactiveX/RxJava · GitHub)

* (ReactiveX/RxAndroid: RxJava bindings for An…)

日志输出

* (orhanobut/logger: Simple, pretty and powerf…)

* (liaohuqiu/android-CLog)

* (ZhaoKaiQiang/KLog · GitHub)

* (pengwei1024/LogUtils · GitHub)

崩溃统计李睁平台

* (腾讯Bugly – Android Crash(崩溃)_iOS Crash(崩溃)_ANR_卡顿)

* (Critterci – Developer Home)

* (The most powerful, yet lightest weight crash reporting solution for iOS and Android

developers.)

架构设计

这个肯定得了解下MVC,MVP,MVVM还有设计模式这些,这里有几个开源项目推荐下

philm

Movie collection and information app for Android.

Github Movie collection and info…

SimpleNews

基于Material Design和MVP的新闻客户端

Github地址:GitHub – liuling07/SimpleNews: 基于Material Design和MVP的新闻客户端

GankDaily

A application show technical information every working days, use MVP pattern.

Github

SimplifyReader

Github地址:GitHub – SkillCollege/SimplifyReader: 一款基于Google Material Design设计开发的Android客户端,包括新闻简读,图片浏览,视频爽看 ,音乐轻听以及二维码扫描五个子模块。

NBAPlus

Github · GitHub

PhotoNoter

Github

Meizhi

Github地址早备:drakeet/Meizhi: gank.io unofficial client, RxJava & Retrofit

DebugDrawer

Android Debug Drawer for faster development

Github · GitHub

ViewServer

Local server for Android’s HierarchyViewer

Github · GitHub

AndroidWiFiADB

IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected.

Android开发框架介绍

编辑文档

学分 +2

开发框架方面包含基本的应用功能开发、数据存储、网络访问这三大块:

一、应用方面

一般而言一个标准的Android程序由如下4部分组成即Activity、Broadcast Intent Receiver、Service、Content Provider: 1. Activity是最频繁、最基本的模块,在Android中,一个Activity就是手机上一屏,相当于一个网页一样,所不同的是,每个Activity运行结束了,有个返回值,类似一个函数一样。Android系统会自动记录从首页到其他页面的所有跳转记录并且自动将以前的Activity压入系统堆栈,用户可以通过编程的方式删除历史堆栈中的Activity Instance。

Activity类中主要是跟界面资源文件关联起来(res/layout目录下的xml资源,也可以不含任何界面资源),内部包含控件的显示设计、界面交互设计、事件的响应设计以及数据处理设计、导航设计等application设计的方方面面。 2. Broadcast Intent Receiver

Intent提供了各种不同Activity进行跳转的机制,譬如如果从A activity跳转到B activity,使用Intent来实现如下: Intent in = new Intent(A.this, B.class); startActivity(in);

BroadcastReceiver提供了各种不同的Android应用程序进行进行进程间通讯的机制,譬如当呼叫来临时,可以通过BroadcastReceiver发布广播消息。对于用户而言,BroadcastReceiver是不透明的,用户无法看到这个事件,BroadcastReceiver通过NotificationManager来通知用户这些事件发生了,它既可以在资源AndroidManifest.xml中注册,也可以在代码中通过Context.registerReceiver()进行注册,只要是注册了,当事件来临的时候,即时程序没有启动,系统也在需要的时候会自动启动此应用程序;另外各应用程序很方便地通过Context.sendBroadcast()将自己的事情广播给其他应用程序;

3. Service,跟Windows当中的Service完全是一个概念,用户可以通过startService(Intent service)启动一个Service,也可通过Context.bindService来绑定一个Service.

4. Content Provider,由于Android应用程序内部的数据都是私有的,Content Provider提供了应用程序之间数据交换的机制,一个程序可以通过实现一个ContentProvider的抽象接口将自己埋颤肆的数据暴露出去,并且隐蔽了具体的数据存储实现,标准的ContentProvider提供了基本的CRUD(Create,Read,Update,Delete)的接口,并且实现了权限机制,保护了数据交互的安全性; 一个标准的Android应用程序的工程文件包含如下几大部分: -> Java源代码部分(包含Activity),都在src目录当中;洞散

-> R.java文件,这个文件是Eclipse自动生成与维护的,开发者不需要修改,提供了Android对的资源全局索引; -> Android Library,这个是应用运行的Android库;

-> assets目录,这个目录里面主要用与放置多媒体等一些文件;

-> res目录,放置的弯轿是资源文件,跟VC中的资源目录基本类似,其中的drawable包含的是图片文件,layout里面包含的是布局文件,values目录里面主要包含的是字符串(strings.xml)、颜色(colors.xml)以及数组(arrays.xml)资源;

-> AndroidManifest.xml,这个文件异常重要,是整个应用的配置文件,在这个文件中,需要声明所有用到的Activity、Service、Receiver等。

开源框架推荐:

网络

* (square/okhttp · GitHub)

* (loopj/android-async-http · GitHub)

事件总线

* (square/otto · GitHub)

* (greenrobot/EventBus · GitHub)

依赖注入

* (square/dagger · GitHub)

* (roboguice/roboguice · GitHub)

* (JakeWharton/butterknife · GitHub)

图片

* (facebook/fresco · GitHub)

* (bumptech/glide · GitHub)

* (square/picasso · GitHub)

数据库

* (greenrobot/greenDAO · GitHub)

* (j256/ormlite-android · GitHub)

* (LitePalFramework/陆扰毁LitePal · GitHub)

响应式编程

* (ReactiveX/RxJava · GitHub)

* (ReactiveX/RxAndroid: RxJava bindings for An…)

日志输出

* (orhanobut/logger: Simple, pretty and powerf…)

* (liaohuqiu/android-CLog)

* (ZhaoKaiQiang/KLog · GitHub)

* (pengwei1024/LogUtils · GitHub)

崩溃统计早备平台

* (腾讯Bugly – Android Crash(崩溃)_iOS Crash(崩溃)_ANR_卡顿)

* (Critterci – Developer Home)

* (The most powerful, yet lightest weight crash reporting solution for iOS and Android

developers.)

架构设计

这个肯定得了解下MVC,MVP,MVVM还有设计模式这些,这里有几个开源项目推荐下

philm

Movie collection and information app for Android.

Github Movie collection and info…

SimpleNews

基于Material Design和MVP的新闻客户端

Github地址:GitHub – liuling07/SimpleNews: 基于Material Design和MVP的新闻客户端

GankDaily

A application show technical information every working days, use MVP pattern.

Github

SimplifyReader

Github地址:GitHub – SkillCollege/SimplifyReader: 一款基于Google Material Design设计开发的Android客户端,包括新闻简读,图片浏览,视李睁频爽看 ,音乐轻听以及二维码扫描五个子模块。

NBAPlus

Github · GitHub

PhotoNoter

Github

Meizhi

Github gank.io unofficial client, RxJava & Retrofit

DebugDrawer

Android Debug Drawer for faster development

Github · GitHub

ViewServer

Local server for Android’s HierarchyViewer

Github · GitHub

AndroidWiFiADB

IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected.

目前框架使用的主要都是开源框羡尺冲笑架,都可以在github上找到:

1、volley

2、android-async-http

3、Afinal框架

4、xUtils框架

5、ThinkAndroid

6、LoonAndroid

主要有以下模块:

(1) 自动注入框架(只需要继承框架内的application既可)

(2)

图片加载框架(多重缓存,自动回收,更大限度保证内存的安全性)

(3) 网络请求模块(继承了基本上现在所有的http请求)

(4)

eventbus(集兄判高成一个开源的框架)

(5) 验证框架(集成开源框架)

(6) json解析(支持解析成或者对象)

(7) 数据库(不知道是哪位写的 忘记了)

(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)

(9)

自动更新模块

(10) 一系列工具类

有什么好的支持多种数据库的ORM框架

1、传统的建表方式

其实为了方便我们对数据库表进行管理,Android本身就提供了一个帮助类:SQLiteOpenHelper。这个类集创建和升级数据库于一身,并且自动管理了数据库版本,算是一个非常好用的工具。

那我们现在就来试试SQLiteOpenHelper的用法吧。首先你要知道SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。本篇文章只需要把注意力放空纤在创建数据库这里就行了,升级数据库我们会在下一篇文章中去讨论。

新建一个MySQLiteHelper类并让它继承SQLiteOpenHelper,这样一个最基本的数据库帮助类的代码如下所示:

view plain copy

public class MySQLiteHelper extends SQLiteOpenHelper {

public MySQLiteHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

其中简晌,当数据库创建的时候会调用onCreate()方法,在这里去执行建表操作就可以了。比如说我们想新建一张news表,其中有title,content,publishdate,commentcount这几列,分别代表着新闻标题、新闻内容、发布时间和评论数,那么代码就可以这样写:

view plain copy

public class MySQLiteHelper extends SQLiteOpenHelper {

public static final String CREATE_NEWS = “create table news (”

+ “id integer primary key autoincrement, ”

+ “title text, ”

+ “content text, ”

+ “publishdate integer,”

+ “commentcount integer)”;

public MySQLiteHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE_NEWS);

}

}

可以看到,我们把建表语句定义成了一个常量,然后在onCreate()方法中去执行了这条建表语句,news表也就创建成功了。这条建表语句虽然简单,斗咐仿但是里面还是包含了一些小的细节,我来解释一下。首先,根据数据库的范式要求,任何一张表都应该是有主键的,所以这里我们添加了一个自增长的id列,并把它设为主键。然后title列和content列都是字符串类型的,commentcount列是整型的,这都很好理解,但是publishdate列该怎么设计呢?由于SQLite中并不支持存储日期这种数据类型,因此我们需要将日期先转换成UTC时间(自1970年1月1号零点)的毫秒数,然后再存储到数据库中,因此publishdate列也应该是整型的。

现在,我们只需要获取到SQLiteDatabase的实例,数据库表就会自动创建了,如下所示:

view plain copy

SQLiteOpenHelper dbHelper = new MySQLiteHelper(this, “demo.db”, null, 1);

SQLiteDatabase db = dbHelper.getWritableDatabase();

LitePal的基本用法

虽说LitePal宣称是近乎零配置,但也只是“近乎”而已,它还是需要进行一些简单配置才可以使用的,那么我们之一步就先快速学习一下LitePal的配置方法。

快速配置

1. 引入Jar包或源码

首先我们需要将LitePal的jar包引入到项目当中,可以点击这里查看LitePal的最新版本,选择你需要的下载即可。下载好了jar包之后,把它复制到项目的libs目录中就算是引入成功了,如下图所示:

如果你不想用jar包的话,也可以把LitePal的源码下载下来,然后作为一个library库导入到Eclipse当中,再让我们的项目去引用这个library库就可以了。

2. 配置litepal.xml

接着在项目的assets目录下面新建一个litepal.xml文件,并将以下代码拷贝进去:

view plain copy

配置文件相当简单,用于设定数据库的名字,用于设定数据库的版本号,用于设定所有的映射模型,我们稍后就会用到。

3. 配置LitePalApplication

由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下所示:

view plain copy

当然,有些程序可能会有自己的Application,并在这里配置过了。比如说有一个MyApplication,如下所示:

view plain copy

没有关系,这时只需要修改一下MyApplication的继承结构,让它不要直接继承Application类,而是继承LitePalApplication类,就可以使用一切都能正常工作了,代码如下所示:

view plain copy

public class MyApplication extends LitePalApplication {

}

但是,有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,仍然是有解释方案的。你可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让MyApplication继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。

仅仅三步,我们就将所有的配置工作全部完成了,并且这是一件一本万利的事情,自此以后,你就可以开心地体验LitePal提供的各种便利了,就让我们从建表开始吧。

开始建表

前面在介绍的时候已经说了,LitePal采取的是对象关系映射(ORM)的模式,那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。

但是我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的SQL语言中解脱出来。

那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张news表,就应该有一个对应的News模型类。新建一个News类,如下所示:

view plain copy

package com.example.databasetest.model;

public class News {

}

然后,表中的每一列其实就是对应了模型类中的一个字段,比如news表中有id、title、content、publishdate、commentcount这几个列,那么在News类中就也应该有这几个字段,代码如下所示:

view plaincopy

view plain copy

public class News {

private int id;

private String title;

private String content;

private Date publishDate;

private int commentCount;

// 自动生成get、set方法

}

其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的嘛。

这里我要特别说明一下,LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

那么有的朋友可能会问了,既然是自动映射的话,如果News类中有一个字符串字段我并不想让它映射到数据库表中,这该怎么办呢?对此,LitePal同样采用了一种极为轻量的解决方案,只有声明成private修饰符的字段才会被映射到数据库表中,如果你有某一个字段不想映射的话,只需要将它改成public、protected或default修饰符就可以了。

现在模型类已经建好了,我们还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在标签中加入News模型类的声明:

view plain copy

注意这里一定要填入News类的完整类名。

OK,这样所有的工作就都已经完成了,现在只要你对数据库有任何的操作,news表就会被自动创建出来。比如说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,如下所示:

view plain copy

SQLiteDatabase db = Connector.getDatabase();

关于litepal 创建数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » LitePal:简单易用的数据库创建工具 (litepal 创建数据库)