Litepal采用的是对象关系映射(ORM)模式
LitePal的配置工作。
1.添加依赖
compile 'org.litepal.android:core:1.3.2'
2.配置litepal.xml文件 在src/main创建assets目录 然后在目录下创建一个litepal.xml文件
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="BookStore"></dbname> <version value="1"></version> <list></list> <!--dbname标签用于指定数据库名 version用于指定数据库版本号 list标签用于指定所有的映射模型--> </litepal>
3.配置LitepalApplication 修改AndroidManifest中的代码
<application android:name="org.litepal.LitePalApplication"
创建和升级数据库
创建:
1.写一个java bean
2.将写的java bean 的类添加到影射模型列表中
修改litepal.xml里的list标签
<list> <mapping class="co.example.leo.litepal.Book"></mapping> <!--使用mapping标签声明我们要配置的映射模型类,一定要使用完整的类名--> </list>
3.调用创建数据库
Connector.getDatabase();
升级:
如果想要添加一个列 只需直接修改Book类中代码 添加一个字段即可
如果需要添加一个表 只需新建一个java bean 然后将版本号加1 并将类添加到映射模型列表中
Litepal 添加数据
Litepal进行表管理的操作时不需要模型类有任何的继承结构,但进行CRUD的时候,必须要继承自DataSupport类才可以
1、让模型类继承自DataSupport
2. 设置数据 调用save方法
Button addData = (Button)findViewById(R.id.add_data); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Book book = new Book(); book.setName("The Da Vinci Code"); book.setAuthor("Dan Brown"); book.setPages(454); book.setPrice(16.96); book.setPress("Unknow"); book.save(); } });
Litepal 更新数据
最简单的一种更新方式就是对已经存储的对象重新设值 然后重新调用save()方法即可
已存储的对象: 对象是否以存储就是根据调用model.isSaved()方法的结果来进行判断即可,返回true表示已存储,false表示未存储
一种情况是已经调用过modle.save()方法去添加数据了
另一种情况是model对象是通过Litepal提供的查询API查出来的
这两种情况都会返回true
1 Button updateData = (Button)findViewById(R.id.update_data); 2 updateData.setOnClickListener(new View.OnClickListener() { 3 @Override 4 public void onClick(View v) { 5 Book book = new Book(); 6 book.setName("The Da Vinci Code"); 7 book.setAuthor("Dan Brown"); 8 book.setPages(454); 9 book.setPrice(16.96); 10 book.save(); 11 book.setPages(124); 12 book.save(); 13 } 14 });
显示添加了一条Book数据
然后调用setPages对书的页数进行了修改,之后再次调用save方法。
第二种方式
public void onClick(View v) { Book book = new Book(); book.setPages(123); book.updateAll("name = ?","The Da Vinci Code"); }
设置默认值 Book book = new Book() book.setDefault("pages"); book.updateAll();
删除数据
//第一个参数用于指定删除那张表的数据 后面的参数用于指定约束条件 DataSupport.deleteAll(Book.class,"price < ?","15");
查询数据
List<Book> books = DataSupport.findAll(Book.class); for(Book book : books){ }
Litepal的其他查询API