zoukankan      html  css  js  c++  java
  • LitePal数据库框架的使用

        
    配置:
      导入jar包
      在assets目录下新建litepal.xml,指定数据库名字和版本以及映射关系
    <?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <dbname value="litepal_demo"></dbname>
        <version value="1"></version>
        <list>
            <mapping class="com.cbooy.litepal.domain.News"></mapping>
            <mapping class="com.cbooy.litepal.domain.Comment"></mapping>
            <mapping class="com.cbooy.litepal.domain.Category"></mapping>
            <mapping class="com.cbooy.litepal.domain.Introduction"></mapping>
        </list>
    </litepal>
      在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<News> newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);
    List<News> newsList = DataSupport.findAll(News.class, new long[] { 1, 3, 5, 7 });
    List<News> allNews = DataSupport.findAll(News.class);

    其他查询条件

    List<News> news = DataSupport.where("id>?","0").find(News.class);
    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);   //排序
    List<News> newsList = DataSupport.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).find(News.class);   // limit
    List<News> 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<Comment> 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);
  • 相关阅读:
    Java_适配器模式
    linux常用命令整理
    (转)使用隐藏的iframe 隐藏form提交,仿AJax无刷新提交,可以实现无刷新上传文件
    mysql添加并返回主键
    学习RMI
    关于bcprov-jdk16
    JavaScript在页面中的引用方法
    通过CFX发布WebService(一)
    字符串和json数据的转换
    MD5 加密与解密
  • 原文地址:https://www.cnblogs.com/cbooy/p/4604287.html
Copyright © 2011-2022 走看看