litepal的使用
1 第一步build.gradle里配置
compile 'org.litepal.android:core:1.3.2'
2 第二步Applation继承 LitePalApplication
public class MyApplation extends LitePalApplication
3 第三步需要保存的类需要继承 DataSupport:extends DataSupport
4 第四步在assets目录下的litepal.xml文件中的list标签下添加声明
保存例子:
DBSearchHistoryBean dbSearchHistoryBean = new DBSearchHistoryBean();
dbSearchHistoryBean.setSearchName(searchStr);
dbSearchHistoryBean.setSearchTime(new Date());
dbSearchHistoryBean.setType(pageType);
boolean isSaveSuccess = dbSearchHistoryBean.saveIfNotExist("type=? and searchName=?", pageType + "", searchStr);
删除例子:
DataSupport.deleteAll(DBSearchHistoryBean.class, "type=?", pageType + "");
litepal数据库框架的详细使用文档
- 可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。
-
一,配置:
1:需要保存的类需要继承 DataSupport:extends DataSupport
2:在assets目录下的litepal.xml文件中的list标签下添加声明:
注意这里一定要填入News类的完整类名 -
二,基本操作:
1:增
News news = new News();
news.setTitle("这是一条新闻标题");
news.setContent("这是一条新闻内容");
news.save();
返回值Boolean类型,存储成功或者失败
2:删
删除数据
调用DataSupport的静态方法delete()可删除指定id的单条记录:
DataSupport.delete(Song.class, id);
也可调用静态方法deleteAll()删除多条记录:
DataSupport.deleteAll(Song.class, "song_name = ?" , "沉默是金");
比如说我们想把news表中标题为“今日iPhone6发布”且评论数等于0的所有新闻都删除掉,就可以这样写:
DataSupport.deleteAll(News.class, "title = ? and commentcount = ?", "今日iPhone6发布", "0");
在不指定约束条件的情况下,deleteAll()方法就会删除表中所有的数据了。
3:改
返回值是修改影响
比如把news表中id为2的记录的标题改成“今日iPhone6发布”,就可以这样写:
News updateNews = new News();
updateNews.setTitle("今日iPhone6发布");
updateNews.update(2);
那么如果我们想把news表中标题为“今日iPhone6发布”且评论数量大于0的所有新闻的标题改成“今日iPhone6 Plus发布”,就可以这样写:
News updateNews = new News();
updateNews.setTitle("今日iPhone6 Plus发布");
updateNews.updateAll("title = ? and commentcount > ?", "今日iPhone6发布", "0");
4:查
查询news表中的所有数据:
List<News> allNews = DataSupport.findAll(News.class);
比如我们想查询news表中所有评论数大于零的新闻,就可以这样写:
List<News> newsList = DataSupport.where("commentcount > ?", "0").find(News.class);
但是这样会将news表中所有的列都查询出来,也许你并不需要那么多的数据,而是只要title和content这两列数据。那么也很简单,我们只要再增加一个连缀就行了,如下所示:
List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").find(News.class);
我希望将查询出的新闻按照发布的时间倒序排列,即最新发布的新闻放在最前面,那就可以这样写:
List<News> newsList = DataSupport.select("title", "content")
.where("commentcount > ?", "0")
.order("publishdate desc").find(News.class);
只查询出前十条数据:.limit(10)
-
三,项目常用数据库操作:
增:
news.save();//数据库保存News类
删:
DataSupport.deleteAll(Song.class, "song_name = ?" , "沉默是金");//数据库删除指定sql语句的Song对象
DataSupport.deleteAll(Song.class);//数据库删除全部的Song表中的数据
改:
News updateNews = new News();
updateNews.setTitle("今日iPhone6 Plus发布");
updateNews.updateAll("title = ? and commentcount > ?", "今日iPhone6发布", "0");
//数据库根据指定sql条件更改数据
查:
List<News> allNews = DataSupport.findAll(News.class); //查询news表中的所有数据
List<News> newsList = DataSupport.where("commentcount > ?", "0").find(News.class); //根据指定条件查询news表中的数据