1、前言
很多做android开发的肯定都知道android有几个数据存储方式,这里就不细说其它的了,今天跟大家讲的是android使用本地数据库存储数据,不过提到手机本地数据库存储,很多人都知道使用SQLiteDataase来操作SQLite数据库,很多人也都有用过,不过要自己写的出来这些sql语句,还是需要懂一些数据库的增删查改的语句的,我相信不少程序员应该不会sql的增删改查的一些语句。当然不绝对,毕竟好学的人还是大有人在的!不会当你在android端去写哪些sql语句的时候,你会觉得好用吗?每个人的回答可能不一样,不会今天看完本篇内容后,相信你将再也不想去碰SQLiteDatabase了!
2、今天介绍的是使用开源库 --- LitePal
1):LitePal 是一款开源的android数据库框架,它采用了对象关系映射(ORM)的模式,将我们平时用的数据库功能进行了封装,使大家不用编写一句sql语句就可以完成各种建表和增删查改的操作。
正式使用:
3、配置LitePal
1): 首先在app/build.gradle文件下的dependencies闭包中添加依赖:
implementation'org.litepal.android:core:1.6.1'
这样我们就算是吧LitePal成功引入到当前项目中了,接下来需要配置 litepal.xml 文件。我们右击app/src/main 目录---> New----> Directory,
创建一个 assets 目录,然后在assets 目录下再新建一个litepal.xml文件,接着编辑 litepal.xml 文件中的内容,如下:
xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="User">dbname> <version value="1">version> <list> list> litepal>
其中, 标签用于指定所有的映射模型,
稍候会用到。
最后我们还需要配置一下 LitePalApplication ,修改AndroidManifest.xml 中的代码,在
4、创建数据库和升级数据库
1)之前创建数据库需要自定义类集成SQLiteOpenHelper等等,这里就完全不用那么麻烦了,这里是使用对象关系映射模型,,不过不要小看这个对象关系映射模型,它就是可以用面向对象的思维来操作数据库,不需要sql语句了,做法如下:
2)首先我们为了创建一张UserInfo表,先看表中有哪些字段,也就是哪些列,然后用最简单的最常用的方法就是定义一个UserInfo实体类,如下:
class UserInfo{ private int id; private String userName; private int age; private String sex; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
这是一个典型的Javabean,在UserInfo 类中定义了几个字段,并生产相应的getter和setter方法,而UserInfo类就会对应数据库中的UserInfo表,而类中的每一个字段分别对应了表中的每一列,这就是对象关系映射最直观的体验,
3)
接下来我们需要将UserInfo类添加到映射模型列表中,修改litepal.xml 中的代码,如下:
xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="User">dbname> <version value="1">version> <list> <mapping class="com.ydys.goods.model.UserInfo">mapping> list> litepal>
这里使用标签下面即可。
4)
好了,这样就已经把所有的工作完成了,现在我们只需要进行任意一次数据库的操作,User.db 数据库就会自动创建出来,现在我们来完成MainActivity中的代码:
MainActivity中的具体代码就不写了,很简单,就是在对应布局下面顶一个Button按钮,在activity中给它监听事件,在点击事件中写上下面一句代码:
LitePal.getDatabase(); 这样一句代码就直接把数据库创建出来了,一句代码搞定。是不是很牛叉???到目前为止你觉得
和之前的那种方式比哪种方便?大家心里很清楚了吧?
不过现在数据库是创建好了,但是没法通过控制台查看已创建好的数据库,因为现在的手机查看需要root权限,不过不用管它,因为在手机里面确实已经创建好了,后面可以一步一步验证,那就是通过创建好的数据库把我们添加的数据取出来,后面慢慢来说。
5)增加字段: 如果在写好后发现字段少了,怎么办?很简单,直接在创建好的Javabean中在加一个字段,写上get和set方法,然后在 litepal.xml文件中把
如果想在创建一个表,同样的方法,在新建一个Javabean,然后在litepal.xml中配置上映射就行了,然后运行点击ok,记得改版本号。
5、添加数据
1)向表中添加数据其实也很简单,如下:
*** 说明在添加数据之前先重点说明一下,要想通过实体类添加数据,必须要让你的实体类,也就是Javabean 继承 DataSupport ,必须要继承,在此声明,不要忘记
下面开始添加数据:
UserInfo userInfo = new UserInfo(); userInfo.setUserName("张三"); userInfo.setAge(25); userInfo.setSex("男"); userInfo.save();
好了,添加数据就完成了,看到有什么不同了吗?就是通过实体类set数据即可,然后最后一步用对象调用 .save() 方法,就可以了。有人会问,不是有一个id吗?其实我们不用管它,id也就是表的主键,如果我们不给定这个id字段的话,数据库创建会自动给生成这样一个id字段,如果给了就按照这个id最为表的主键,而且这个主键id是自增长的,所以不用管,后面如果想对标进行查改删等,通过id就可以实现了,所以我觉得id我们给出来好一些,后面好拿这个id操作数据库。
6、使用LitePal查询数据
使用LitePal查询数据也是非常大的方便,一行代码搞定:
List<UserInfo> lists = DataSupport.findAll(UserInfo.class);
这样就拿到了刚才添加的一条数据,通过DataSupport的findAll方法通过传入的参数为即可查询指定表的数据,返回值为一个UserInfo类型集合,是不是很方便啊?
它还可以单独查第一条数据:UserInfo firstInfo = DataSupport.findFirst(UserInfo.class);
它还有其它方法,大家可以去试试,
7、删除数据
删除数据通过:DataSupport.deleteAll(UserInfo.class,"id","5"); 这句代码是通过约束条件来删除的,删除id < 5的数据,这里就举这一个例子,其它的大家通过DataSupport的delete其它方法根据参数去处理即可,
8、LitePal还有修改数据,这个和增加增加数据有些相似,比如:
UserInfo info = new UserInfo();
info.setSex("女");
info.updateAll("id=?","1");
即可做到修改id为1的数据,性别改为“女”等等,
总结:到这里为止,LitePal的介绍就算基本结束了,大家只要认真看到,照着敲一遍,很容易的,比之前的那种方式是不是简单粗暴?关于DataSupport中海油一些其它的方法操作数据库的,大家可以自己去试试,这里就对它的基本使用先介绍到这里了!希望对所有android开发者有帮助,,,
如果大家觉得对你帮助,一定要把好东西分享出去哦,,,
***** 转载请标明出处,谢谢! ****