使用步骤
添加Jar文件
assets文件夹中添加 litepal.xml
数据库名称
版本号
对应的实体
3. 配LitePalApplication
没有自定义Application时
自定义Application需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让自定义Application继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。
LitePal建表
建一张news标就要有对应的News实体类,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date
public class News {
private int id;
private String title;
private String content;
private Date publishDate;
private int commentCount;
// 自动生成get、set方法
...
}
编辑assets目录下的litepal.xml文件
完整类名
获取SQLiteDatabase实例 SQLiteDatabase db = Connector.getDatabase();
LitePal升级表
更改litepal.xml中得
LitePal操作数据
让所有实体对象继承DataSuppert
News news = new News();
news.setTitle("这是一条新闻标题");
news.setContent("这是一条新闻内容");
news.setPublishDate(new Date());
boolean flag = news.save();
news.saveThrows(); //存储失败会抛异常
存储后会自动给id赋上值news.getId();
//存储列表
List newsList;
...
DataSupport.saveAll(newsList);
//修改
ContentValues values = new ContentValues();
values.put("title", "今日iPhone6发布");
DataSupport.update(News.class, values, 2);//指定id
ContentValues values = new ContentValues();
values.put("title", "今日iPhone6 Plus发布");
DataSupport.updateAll(News.class, values, "title = ?", "今日iPhone6发布");
DataSupport.updateAll(News.class, values, "title = ? and commentcount > ?", "今日iPhone6发布", "0"); //约束条件
DataSupport.updateAll(News.class, values); //无约束条件
News updateNews = new News();
updateNews.setToDefault("commentCount");
updateNews.updateAll();//news表中所有新闻的评论数清零
DataSupport.delete(News.class, 2); //删除记录
DataSupport.deleteAll(News.class, "title = ? and commentcount = ?", "今日iPhone6发布", "0");
//删除记录约束条件
DataSupport.deleteAll(News.class); //删除全部记录
if (news.isSaved()) {
news.delete();
}
LitePal查询
News news = DataSupport.find(News.class, 1); //指定记录
News firstNews = DataSupport.findFirst(News.class); 第一条记录
News lastNews = DataSupport.findLast(News.class); 最后一条记录
List newsList = DataSupport.findAll(News.class, 1, 3, 5, 7); 指定记录成列表
long[] ids = new long[] { 1, 3, 5, 7 };
List newsList = DataSupport.findAll(News.class, ids);指定记录成列表
List allNews = DataSupport.findAll(News.class);
List newsList = DataSupport.select("title", "content")
.where("commentcount > ?", "0")
.order("publishdate desc").limit(10).offset(10)
.find(News.class);//链式查询
News news = DataSupport.find(News.class, 1, true);//映射属性查询,比较耗时不推荐
List commentList = news.getCommentList();
public class News extends DataSupport{
public List getComments() {
return DataSupport.where("news_id = ?", String.valueOf(id)).find(Comment.class);
}
}
//原生查询
Cursor cursor = DataSupport.findBySQL("select * from news where commentcount>?", "0");