博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LitePal数据库框架的使用
阅读量:5062 次
发布时间:2019-06-12

本文共 3515 字,大约阅读时间需要 11 分钟。

下载包:
代码托管地址:
    
配置:
  导入jar包
  在assets目录下新建litepal.xml,指定数据库名字和版本以及映射关系
  在Application中配置,android:name="org.litepal.LitePalApplication"
 
 
初始化数据库
  Connector.getWritableDatabase(); 调用此方法即可完成数据库的创建
        
数据库的修改和升级:
     直接修改实体映射关系和字段,然后将数据库的version加1,就可以自动完成数据库的更新操作
 
关联关系:
     一对一,一对多,多对多,只要在实体中自然描述即可,映射关系会自动生成。
 
实体类的crud操作:
  保存:普通的实体类继承自 DataSupport即可完成save()保存一个,saveAll()保存一个集合的数据
  修改数据:
        修改一条数据,直接使用静态方法
    
DataSupport.update(Class
modelClass, ContentValues values, long id)
        修改多条,直接使用静态方法
    
DataSupport.updateAll(modelClass, values, conditions)
        conditions数组,由于它的类型是一个String数组,我们可以在这里填入任意多个String参数,其中最前面一个String参数用于指定约束条件,后面所有的String参数用于填充约束条件中的占位符(即?号),
        比如约束条件中有一个占位符,那么后面就应该填写一个参数,如果有两个占位符,后面就应该填写两个参数,以此类推
        例: DataSupport.updateAll(News.class, values, "title = ? and commentcount > ?", "xxxxx", "0"); 
        由于实体类继承了DataSupport,因此可以使用update方法直接修改
News updateNews = new News();  updateNews.setTitle("new title");  updateNews.update(2);
        修改成默认值,比如说将评论数修改成0,只是调用updateNews.setCommentCount(0)这样是不能修改成功的,因为即使不调用这行代码,commentCount的值也默认是0。
            所以如果想要将某一列的数据修改成默认值的话,还需要借助setToDefault()方法。用法也很简单,在setToDefault()方法中传入要修改的字段名就可以了(类中的字段名)
News updateNews = new News();  updateNews.setToDefault("commentCount");  updateNews.updateAll();
    删除数据:
        DataSupport.delete(News.class, 2);    删除一条数据
        DataSupport类中提供了一个isSaved()方法,这个方法返回true就表示该对象是经过持久化的,返回false则表示该对象未经过持久化。
 
    查询:
        通用的几个查询方式,使用id
  
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);List
newsList = DataSupport.findAll(News.class, new long[] { 1, 3, 5, 7 });List
allNews = DataSupport.findAll(News.class);

 

其他查询条件

List
news = DataSupport.where("id>?","0").find(News.class);List
newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").find(News.class); // 指定某些列List
newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").find(News.class); //排序List
newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).find(News.class); // limitList
newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).offset(10).find(News.class); // 分页

 

如何查询关联表中的数据,每一个类型的find()方法,都对应了一个带有isEager参数的方法重载,设置成true就表示激进查询,这样就会把关联表中的数据一起查询出来了。 (不推荐)

最好的做法是在实体类中封装关联对象的查询操作。
public class News extends DataSupport{      public List
getComments() { return DataSupport.where("news_id = ?", String.valueOf(id)).find(Comment.class); } }

 

原生SQL查询支持:
Cursor cursor = DataSupport.findBySQL("select * from news where commentcount>?", "0");

 

聚合函数的支持,LitePal中一共提供了count()、sum()、average()、max()和min()这五种聚合函数

int result = DataSupport.count(News.class); int result = DataSupport.where("commentcount = ?", "0").count(News.class); int result = DataSupport.sum(News.class, "commentcount", int.class);  double result = DataSupport.average(News.class, "commentcount");int result = DataSupport.max(News.class, "commentcount", int.class);int result = DataSupport.min(News.class, "commentcount", int.class);

 

转载于:https://www.cnblogs.com/cbooy/p/4604287.html

你可能感兴趣的文章
SQL语句在查询分析器中可以执行,代码中不能执行
查看>>
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
银行排队问题(详解队列)
查看>>
input输入提示历史记录
查看>>
序列化和反序列化(1)---[Serializable]
查看>>
对二维数据进行边界拓展
查看>>
asp.net 验证控件
查看>>
评论列表显示及排序,个人中心显示
查看>>
微软职位内部推荐-Software Engineer II
查看>>
区分Integer.getInteger和Integer.valueOf使用方法
查看>>
MySQL oracle 分页
查看>>
iOS基础-UIKit框架-触摸事件-响应者链条
查看>>
SQL优化
查看>>
利用Highcharts插件制作动态图表
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
4.9 Parser Generators
查看>>
[10月18日的脚本] 从Access中导入多个表到Excel
查看>>
centos下安装nginx
查看>>