LitePal数据库框架的使用

下载包:https://github.com/LitePalFramework/LitePal/tree/master/downloads

代码托管地址:https://github.com/LitePalFramework/LitePal

配置:

  导入jar包

  在assets目录下新建litepal.xml,指定数据库名字和版本以及映射关系

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="litepal_demo"></dbname>
    <version value="1"></version>
    <list>
        <mapping class="com.cbooy.litepal.domain.News"></mapping>
        <mapping class="com.cbooy.litepal.domain.Comment"></mapping>
        <mapping class="com.cbooy.litepal.domain.Category"></mapping>
        <mapping class="com.cbooy.litepal.domain.Introduction"></mapping>
    </list>
</litepal>

  在Application中配置,android:name="org.litepal.LitePalApplication"

初始化数据库

  Connector.getWritableDatabase(); 调用此方法即可完成数据库的创建

数据库的修改和升级:

直接修改实体映射关系和字段,然后将数据库的version加1,就可以自动完成数据库的更新操作

关联关系:

一对一,一对多,多对多,只要在实体中自然描述即可,映射关系会自动生成。

实体类的crud操作:

  保存:普通的实体类继承自 DataSupport即可完成save()保存一个,saveAll()保存一个集合的数据

  修改数据:

修改一条数据,直接使用静态方法

    

DataSupport.update(Class<?> modelClass, ContentValues values, long id)

修改多条,直接使用静态方法

    

DataSupport.updateAll(modelClass, values, conditions)

conditions数组,由于它的类型是一个String数组,我们可以在这里填入任意多个String参数,其中最前面一个String参数用于指定约束条件,后面所有的String参数用于填充约束条件中的占位符(即?号),

比如约束条件中有一个占位符,那么后面就应该填写一个参数,如果有两个占位符,后面就应该填写两个参数,以此类推

例: DataSupport.updateAll(News.class, values, "title = ? and commentcount > ?", "xxxxx", "0");

由于实体类继承了DataSupport,因此可以使用update方法直接修改

News updateNews = new News();
updateNews.setTitle("new title");
updateNews.update(2); 

修改成默认值,比如说将评论数修改成0,只是调用updateNews.setCommentCount(0)这样是不能修改成功的,因为即使不调用这行代码,commentCount的值也默认是0。

所以如果想要将某一列的数据修改成默认值的话,还需要借助setToDefault()方法。用法也很简单,在setToDefault()方法中传入要修改的字段名就可以了(类中的字段名)

News updateNews = new News();
updateNews.setToDefault("commentCount");
updateNews.updateAll();  

删除数据:

DataSupport.delete(News.class, 2);    删除一条数据

DataSupport类中提供了一个isSaved()方法,这个方法返回true就表示该对象是经过持久化的,返回false则表示该对象未经过持久化。

查询:

通用的几个查询方式,使用id

  

News news = DataSupport.find(News.class, 1);
News firstNews = DataSupport.findFirst(News.class);
News lastNews = DataSupport.findLast(News.class);
List<News> newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);
List<News> newsList = DataSupport.findAll(News.class, new long[] { 1, 3, 5, 7 });
List<News> allNews = DataSupport.findAll(News.class);

其他查询条件

List<News> news = DataSupport.where("id>?","0").find(News.class);
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").find(News.class);    // 指定某些列
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").find(News.class);   //排序
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).find(News.class);   // limit
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).offset(10).find(News.class);  // 分页

如何查询关联表中的数据,每一个类型的find()方法,都对应了一个带有isEager参数的方法重载,设置成true就表示激进查询,这样就会把关联表中的数据一起查询出来了。 (不推荐)

最好的做法是在实体类中封装关联对象的查询操作。

public class News extends DataSupport{
    public List<Comment> getComments() {
        return DataSupport.where("news_id = ?", String.valueOf(id)).find(Comment.class);
    }
}

原生SQL查询支持:

Cursor cursor = DataSupport.findBySQL("select * from news where commentcount>?", "0"); 

聚合函数的支持,LitePal中一共提供了count()、sum()、average()、max()和min()这五种聚合函数

int result = DataSupport.count(News.class);
int result = DataSupport.where("commentcount = ?", "0").count(News.class);
int result = DataSupport.sum(News.class, "commentcount", int.class);
double result = DataSupport.average(News.class, "commentcount");
int result = DataSupport.max(News.class, "commentcount", int.class);
int result = DataSupport.min(News.class, "commentcount", int.class);
时间: 2024-10-11 11:30:06

LitePal数据库框架的使用的相关文章

litePal数据库框架简单使用

本文只是简单介绍使用,高手之路请查看点击打开链接 首先下载jar包: 将jar导入项目:复制jar包到lib目录,右键jar包选择Add as library; 配置Application: 在assets目录下新建litepal.xml配置文件:文件里声明数据库名.版本号.表的集合:表的集合就是声明实体类的完整路径: 新建实体类,实体类需继承DataSupport:每一张表对应一个实体类:每一个属性就是表里的一个字段:不想加入表里的字段将访问权限不要设为private即可: 此时准备工作已完成

SQlite数据库框架:LitePal

常用的数据库框架Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.Android数据库的框架很多,选择自己喜欢的,不用掌握很多,选择自己喜欢的就好. Sugar&GreenDao&Afinal&ORMLite&Realm&LiteOrm&DBFlow&ActiveAndroid&LitePal SugarORM 是对象

Litepal 数据库操作框架的使用 (火)

LitePal是GitHub上一款开源的Android数据库框架. 它採用了对象关系映射(ORM)的模式,将平时开发时最经常使用的一些数据库功能进行了封装.使得开发人员不用编写一行SQL语句就能够完毕各种建表.増删改查的操作. 并且LitePal非常"轻",jar包大小不到100k,并且近乎零配置. 核心:1)从表中读取到数据,展现给用户:2)把数据存储到表中. 特点:1)全然不须要使用sqlite语句; 2)以面向对象的方式操作数据库. Github地址:https://github

浅谈数据库框架,见笑,请多指正

浅谈数据库框架,见笑,请多指正 http://weibo.com/p/1001603724746155003486 一友说"插件式存储又割裂了SQL引擎的完整逻辑...总体而言在现有框架下MySQL的优化器没有多大改进的价值". 我们且做个技术分析: 1 插件式框架,可以静态/动态加载组件,方便在同类不同属家的模块间切换,这种设计是良好的. 很多软件的设计都采用了"微内核+插件"这样的方式构筑了强大的应用.如Ecplise生态圈. 2 数据库范围内, MySQL的属

在android中使用OrmLite数据库框架

android中的数据库框架OrmLite,是对android中自带数据库的封装.下面按步骤说明如何使用. 最重要的是继承OrmLiteSqliteOpenHelper,获取得到helper对象 在里面重写onCreate,onUpgrade,close等方法,完成数据库表的创建,更新,资源释放. 获取到helper对象后,就可以使用helper的getDao方法获取dao来对数据表进行操作.下面是对数据库访问的Dao进行的封装 1.继承OrmLiteSqliteOpenHelper获取help

Android 数据库框架OrmLite的使用(一)

在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar,放在你项目的libs目录下. 2.编写Bean类 package com.example.ormlite.bean; import java.util.Collection; import com.j256.ormlite.field.DatabaseField; import com.j256.

iOS---SQLite数据库框架之FMDB -Swift

SQLite数据库框架之FMDB 什么是FMDB? FMDB是iOS平台的SQLite数据库框架,FMDB以OC的方式封装了SQLite的C语言API.对比苹果自带的Core Data框架,更加轻量级和灵活,使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码.并且FMDB提供了多线程安全的数据库操作方法,能有效地防止数据混乱. 如何集成FMDB? 这里我只写swift中的集成方式,Objective-C类似,只是不需要添加Swift extensions和桥接. GitHub地址:https

自己动手写Android数据库框架

前言 相信不少开发人员跟我一样,每次都非常烦恼自己写数据库,并且那些数据库语句也经常记不住.当然网上也有非常多非常好的数据库框架,你能够直接拿来用,可是 非常多时候我们的项目.特别是一个小型的Andrond应用原本用到的数据库结构比較简单,不是必需去用那些有点臃肿的框架.当然,即使你用那些框架.当你遇到问题时,你是否也得去改动它?你要改动别人的框架必须的读懂他人的设计代码.所以无论从那个角度出发,你都得掌握简单的数据库操作.那么这篇博客就从简单的数据库操作来学习Android数据库相关知识点.然

litepal数据库的配置

litepal是一个开源的数据库,托管在GitHub上. 1:首先在在build.grade文件的闭包(dependencies)中添加依赖,后面的数字是版本号 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.androi