是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。其实Litepal的jar包很小,不到100k,但是用起来确实很方便,尤其是对于我这样的补数据sql语句的人来说,它里面的代码都是Android正常写的代码相关,后面会给出一个小Demo。
接下来说说怎么一步步介入Litepal框架,以及如何使用框架进行则删改查操作:首先,介入jar包,在build.gride里面:
compile ‘org.litepal.android:core:1.4.1’
一个很重要的配置就是Application文件,如果没有自定义的Application文件那就直接在manifest中将application设置名为org.litepal.LitePalApplication:
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
</activity>
</application>
如果已经有自定义的Application文件直接,让自己定义的application文件继承LitePalApplication;到这边结束,配置LitePal算是结束了,接下来看怎么用这个框架创建数据库和表了:其实主要是在我们的资源文件下建litepal.xml中创建表:
<?xml version="1.0" encoding="utf-8"?>
<litepal> <dbname value="BookStore" />
<version value="1" /> <list> <mapping class="com.zhong.litepal.Book" />
<mapping class="com.zhong.litepal.Person" /> </list>
</litepal>
dbname就是我们创建的数据库的名字,version数据库的版本,在我们需要升级数据库的时候,需要在这里面把版本号修改成大于当前版本的数字;下面list里面的就是我们创建的表,上面的代码中已经创建了两个表分别是Book和Persion,这两其实就是两个bean类,里面涵盖了各个字段,代表着数据库里面的各个字段,list里面写入这两bean的绝对路径;这两个bean需要继承打他DataSupport类,接下来说一下怎么对这些表进行增删改查操作,直接上代码吧:
onCreate方法中调用LitePal.getDatabase();初始化数据
添加数据:
Book book = new Book();
book.setAuthor("张三");
book.setId(1);
book.setName("草本纲目");
book.setPrice(90.00);
book.setPages(890);
book.save(); Book
book2 = new Book();
book2.setAuthor("李时珍");
book2.setId(2);
book2.setName("上下五千年");
book2.setPrice(190.00);
book2.setPages(5860);
book2.save();
删除数据:
DataSupport.deleteAll(Book.class,"price > ?","100");
修改数据:
Book book = new Book();
book.setAuthor("张三");
book.setId(1);
book.setName("草本纲目");
book.setPrice(90.00);
book.setPages(890);
book.save();
book.setPrice(0.99);
book.save();
多种查询数据:
List<Book> booklist = DataSupport.findAll(Book.class);
for(Book book:booklist){
Log.i("zhong",book.getName());
}
List<Book> booklist2 = DataSupport.select("name","张三").find(Book.class);
List<Book> booklist3 = DataSupport.where("pages > ?","600").find(Book.class);
//查询book中的全部数据按照price降序,asc则表示升序排列
List<Book> booklist4 = DataSupport.order("price desc").find(Book.class);
//查询表中的前3条数据
List<Book> booklist5 = DataSupport.limit(3).find(Book.class);
//查询表中的2,3,4条数据
List<Book> booklist6 = DataSupport.limit(3).offset(1).find(Book.class);
//查询Book表中第11~20条满足页数大于400这个条件的name,author,pages这三列数据,并且按照页数升序排列;
List<Book> booklist7 = DataSupport.select("name","张三","pages")
.where("pages > ?","400")
.order("pages")
.limit(10)
.offset(10)
.find(Book.class);
其实,LitePal里面还涵盖了更加全面的操作方法,这里没有一一列举,有兴趣的可以自己查询一下了解一下,附上上面小Demo的链接:点击打开链接