android之LitePal 3.0 的基本使用
一.LitePal简介
LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和增删改查的操作,并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。
GitHub : http://github.com/LitePalFramework/LitePal
二.LitePal的使用
1.添加依赖
在app/build.gradle文件中添加compile依赖如下:
dependencies {compile 'org.litepal.android:java:3.0.0'
}
2.在assets目录下创建litepal.xml配置文件
项目文件夹下New->Folder->Assets Folder创建相应的assets文件夹,然后在assets文件夹下创建一个名为litepal.xml的文件,编辑文件如下:
<?xml version="0.1" encoding="utf-8"?>
<litepal><dbname value="lss0555_litepaldemo" /> // 数据库名称为litepaldemo,默认以 .db 结尾,如未以此结尾,则自动添加。<version value="1" /> // 数据库版本为1,每次数据库发生变动版本号必须+1<list> // 有几张表就在list之间写几个mapping// list标签中的实体类都应该继承LitePalSupport这个类,这个千万别忘记<mapping class="example.com.litepal.model.New"></mapping></list><storage value="lss0555/litepal/database" /> //storage 定义数据库文件存储的地方,可选 internal(内部) 和 external(外部), 默认为 internal
</litepal>
3.在Application中初始化
在自己的application中加入一行代码即可:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate();// 初始化LitePal.initialize(this); } ... }
经过上面3步的配置,LitePal就已经集成成功并可以正常使用了。
三.使用测试
1.实体类创建
/*** Created by lss0555 on 2019/3/11/011.* 从LitePal 2.0.0版本开始建议使用继承LitePalSupport类,* DataSupport类已经被标为了废弃,虽然暂时还可以正常工作,但是不建议再继续使用了*/public class New extends LitePalSupport {private int id;//不为空@Column(nullable = false)private String title;@Columnprivate String detail;@Columnprivate String imgurl;
注意:
- 不管实体类中有没有id这个属性,都会默认创建一个为整型的id字段,作为自增的主键
- 如果实体类中有一个字段名为id,那么类型只能为int或者long
- id字段的值始终为当前记录的行号(下标从1开始),即使我们在实体类中定义了int或者long类型的id字段,在添加数据时人为的设置id的值为100,等其他值,查询数据库发现该id字段的值设置是无效的,她始终等于该条记录所在的行id,即第几条记录。
- 所有的column注解总共有四个,defaultValue的默认值为空字符,所以这个注解只能用以是String类型的字段,即字符型才有默认值
- litepal支持的实体类字段映射类型为 int,long,double,float,byte[],boolean,String,Date;不支持String[]数组型
2.数据库增删改查操作
(1) .存储操作
New aNew = new New();aNew.setTitle("新闻1");aNew.setDetail("详情1");aNew.setImgurl("http://www.baidu.com");aNew.setUserid("lss0888");aNew.save();
save()方法是有返回值的,返回true代表添加成功,返回flase代表添加失败。
save()是添加一条数据,批量添加是 LitePal.saveAll(news);
(2). 删除记录
//删除数据库中new表的所有记录
LitePal.deleteAll(New.class); //删除数据库new表中id为1的记录
LitePal.delete(New.class,1); //删除数据库new表中idn大于3的记录
LitePal.delete(Movie.class, "id > ?" ,3);
(3). 修改记录
1.根据条件修改
New aNew = new New();
aNew.setTitle("新闻11新闻11新闻11");
aNew.setDetail("详情1新闻11新闻11新闻11");
aNew.setImgurl("http://www.baidu.com新闻11");
aNew.setUserid("lss0888新闻11");
aNew.update(11);
2.更新所有title为新闻1的记录,将title字段设为标题2
New aNew = new New();
aNew.setTitle("标题2");
aNew.updateAll("title = ?", "新闻1");
3.多条件更新
New aNew = new New();
aNew.setTitle("新闻888");
aNew.setDetail("详情888");
aNew.updateAll("title=? and detail=?", "标题2","详情1");
(4). 查询记录
1.查询所有
List<New> newList = LitePal.findAll(New.class);
2.查询id为1
New aNew = LitePal.find(New.class, 1);
3.查找title新闻1的记录,并且以id排序
List<New> aNew = LitePal.where("title = ?", "新闻1").order("id").find(New.class);
4.查找所有id龄小于2
List<New> aNew = LitePal.where("id < ?", "3").find(New.class);
5.多条件查询
int age = 12;//条件一
String sex = "man";条件二
DataSupport.where("age = ? and sex = ?", "" + age, sex).find(Comment.class);//查询表Comment
(5). 原始sql语句操作
Cursor select_ = LitePal.findBySQL(sql);
findBySQL()方法接收任意个字符串参数,其中第一个参数就是SQL语句,后面的参数都是用于替换SQL语句中的占位符的,用法非常简单。另外,findBySQL()方法返回的是一个Cursor对象,这和原生SQL语句的用法返回的结果也是相同的。
(6). 删除数据库
LitePal.deleteDatabase("")
(7). 创建数据库
LitePal.getDatabase()
(8). 混淆配置
-keep class org.litepal.** {*;
}-keep class * extends org.litepal.crud.LitePalSupport{*;
}
(9). 使用LitePal来完成升级表的操作:
包括新增一张表,新增表中的一个字段,删除表中的一个字段,删除表等,每一次的升级操作litepal.xml文件中数据库的版本号都必须加1.
具体升级操作参考博客:
https://blog.csdn.net/guolin_blog/article/details/39151617
android之LitePal 3.0 的基本使用相关推荐
- Android数据库高手秘籍(九),赶快使用LitePal 2.0版本吧
转载请注明出处:https://blog.csdn.net/guolin_blog/article/details/80586028 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 ...
- android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解
前言 正好项目用了这种数据存储方式,特地写一篇加深印象,在我看来,LitePal是使用最简单,集成最方便的数据库,没有之一. LitePal 简介 LitePal 是一款开源的 Android 数据库 ...
- android中LitePal的使用
网上有一篇文章写的挺好的,推荐给大家:安卓项目实战之:数据库框架 LitePal 3.0 的使用详解 LitePal是对SQLite数据库操作进行了封装,采用对象映射的方式操作SQLite数据库,简化 ...
- ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0
错误内容如下 ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0 Show in Project Structure d ...
- 解决编译不通过Could not find support-compat.aar (com.android.support:support-compat:26.0.0).
android 编译报错: > Could not find support-compat.aar (com.android.support:support-compat:26.0.0).Sea ...
- A problem occurred starting process 'command '/home/jason/Android/Sdk/build-tools/23.0.3/aapt
参考:http://www.cnblogs.com/jonzone/p/5246531.html A problem occurred starting process 'command '/home ...
- Android 进程常驻(0)----MarsDaemon使用说明
版权声明:本文为博主原创文章,未经博主允许不得转载. 这是一个轻量级的库,配置几行代码,就可以实现在Android上实现进程常驻,也就是在系统强杀下,以及360获取root权限下,clean mast ...
- eclipse一直卡住,出现 “android sdk content loader 0%” 卡住的错误分析及解决方法...
分析:这种问题之前没有遇到过,也不知道什么原因,直接去网上查询,打开www.stackoverflow.com,输入要查询问题的关键词,我们输入 "android sdk content l ...
- 【Android】Vitamio 4.0 公测版发布(2013-05-28)
更新 Vitamio 4.0 正式版已经发布! 这里:[Android]Vitamio 4.0 正式版发布/ Vitamio IOS 测试版发布(2013-07-16) 正文 一.下载地址 Vitam ...
- Android Butterknife 8.4.0 使用方法总结
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/52983418 本文出自[赵彦军的博客] 前言 ButterKnife 简介 But ...
最新文章
- linux的/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow—关于用户和组的配置文件
- SAP RETAIL 寄售模式的公司间STO发货过账后的物料凭证的特殊点
- 使用SQL语句UPDATE数据,怎样知道是否UPDATE成功
- [原创]教你如何最快写出酷炫的dialog对话框
- 两个月计算机考研数学,管综数学考前两个月让你事半功倍的方法
- redis分布式缓存php,基于redis分布式缓存实现
- c语言’内存清除函数,c语言常用内存处理函数
- python中response对象的属性_Django 中的响应对象 Response
- 常用插件的封装(轮播图、选项卡、楼梯导航及、拖拽)
- android view强制重绘_安卓自定义 view 不能正常重绘
- pod BaiduMapKit 报错解决方案
- 怎么学计算机制作ppt教程,ppt 制作教程步骤(新手电脑制作 ppt 详细步骤)
- 计算机内部用机内码而不是国际码,在计算机内部用机内码而不用国标码表示汉字的原因是()。...
- mysql 数据恢复 binlog
- 北航计算机考研录取多少人,北航计算机考研近三年报考录取情况
- 如何突破四维空间,进入五维空间
- win7连接远程服务器特别慢,技术员告诉您win7远程桌面连接速度慢的具体解决法子...
- mkv转换mp4格式,mkv格式转mp4
- 台式电脑显示无法连接服务器,台式电脑无法连接网络怎么办
- CSS3实现5个常用的网页动画效果