安卓轻量型数据库Litepal简单使用

      LitePal数据库简单使用

            To live is to function , that is all there is in living.

                    LitePal是一个Android开源原生库,它使开发者使用SQLite数据库变得非常容易。 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新表,约束操作,聚合功能等等。LitePal的安装也相当简单,3分钟之内就可以将它集成到你的工程里。并且它特别轻量化,远比GreenDao占用更少资源,号称配置几乎为零。

     它能够实现的功能如下:

           1.使用对象关系映射(ORM) 模型。
        2.几乎零配置(只有一个配置文件,该配置文件属性很少)。
        3.自动维护所有表格(比如创建、更改、删除表格)。
        4.提供封装的API,无需写SQL语句。
        5.很棒的集群查询功能。
        6.依然可以选择使用SQL,LitePal提供比原始更易用更好的API接口。     

    接下来开始在自己的工程里面配置litepal。

         第一步:导入依赖包。

       Litepal官方介绍https://github.com/LitePalFramework/LitePal#latest-downloads

        直接在自己的项目的builde.gradle的denpendenceies下导入

//    litepal依赖包导入
    compile 'org.litepal.android:core:1.5.1'
      更加具体

安卓轻量型数据库Litepal简单使用_第1张图片

       第二步:创建application继承LitePalApplication

安卓轻量型数据库Litepal简单使用_第2张图片

   为什么要这么做尼,接下来请看,litapalApplication里面做了什么

public class LitePalApplication extends Application {

   /**
    * Global application context.
    */
   static Context sContext;

   /**
    * Construct of LitePalApplication. Initialize application context.
    */
   public LitePalApplication() {
      sContext = this;
   }

    /**
     * Deprecated. Use {@link LitePal#initialize(Context)} instead.
     * @param context
    *        Application context.
     */
   @Deprecated
    public static void initialize(Context context) {
        sContext = context;
    }

   /**
    * Get the global application context.
    * 
    * @return Application context.
    * @throws org.litepal.exceptions.GlobalException
    */
   public static Context getContext() {
      if (sContext == null) {
         throw new GlobalException(GlobalException.APPLICATION_CONTEXT_IS_NULL);
      }
      return sContext;
   }

}
  可以发现他就做了一件事情获取上下文。

  第三步,创建表

   litepal创建表非常简单,和我们平时构造一个对象是一样的,只是这个对象需要继承DataSupport

安卓轻量型数据库Litepal简单使用_第3张图片

       为什么这么做尼,我复制下DataSupport这个类的介绍

 * CREATE TABLE person (
 *     id integer primary key autoincrement,
 *     age integer, 
 *     name text
 * );
 * 
* * @author Tony Green * @since 1.1 */ public class DataSupport { 很显然,这个DataSupport在通过我们给对象的属性来映射成表的字段,而表的名称对应的是创建的这个类名(StudentBeanDB)

   第四步,声明数据库名称关联表

   首先我们创建assets数据文件,然后在这个文件夹下创建一个名为LitePal的xml文件

   创建asset文件夹的方法如下

安卓轻量型数据库Litepal简单使用_第4张图片

  创建litepal.xml


    
    value = "demoTest"/>
    
    value = "1"/>
  
      
      class = "com.example.march_day18_litepal_simple_use.StudentBeanDB"/>
  

      到此为止我们的数据库算是创建成功了,接下来我们运行一下看看

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建数据库
        //LitePal.getDatabase();
        Connector.getDataBase();
         initDatas();
    }

    private void initDatas() {
        StudentBeanDB bean;
        for (int i = 0; i < 30; i++) {
              bean = new StudentBeanDB(i,201703180+i,70+i,"胖娃娃"+i+"","少女");
            if(bean.save()){
                Log.i("----->>", "保存成功 ");
            }
        }
    }
}
接下来看logcat

安卓轻量型数据库Litepal简单使用_第5张图片
其实,这其中还是遇到了一个问题的,当时是由于在创建litepal.xml文件的时候多打了一个字母,致使litepal不能映射出数据库

安卓轻量型数据库Litepal简单使用_第6张图片

ok,接下来对数据库进行增删查改操作。

public void touch(View v){
            List all = DataSupport.findAll(StudentBeanDB.class);
    switch (v.getId()){
        case R.id.db_add:
            StudentBeanDB newBean = new StudentBeanDB(all.size(), 201703180 + all.size(),70, "新同学——胖娃娃" + all.size() + "", "小处男");
            newBean.save();
            break;
        case R.id.db_delete:
            DataSupport.deleteAll(StudentBeanDB.class,"sName = ?","胖娃娃5");
            break;
        case R.id.db_find:
            mResult.setText(null);
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < all.size(); i++) {
                StudentBeanDB beanDB = all.get(i);
                stringBuilder.append("姓名:"+beanDB.getsName()+"学号:"+beanDB.getsId()+"性别:"+
                                 beanDB.getsSex()+"年级:"+beanDB.getsClass()+"成绩:"+
                                  beanDB.getsGread()+"\n");
                }
                mResult.setText(stringBuilder.toString());
            break;
        case R.id.db_re:
            ContentValues contentValues = new ContentValues();
            contentValues.put("sName","小明要开车");
            DataSupport.updateAll(StudentBeanDB.class,contentValues," sName = ?","胖娃娃11");
            break;

    }
}

一· 查讯

 DataSupport.findAll(StudentBeanDB.class)

安卓轻量型数据库Litepal简单使用_第7张图片

二·增添数据

StudentBeanDB newBean = new StudentBeanDB(all.size(), 201703180 + all.size(),70, "新同学——胖娃娃" + all.size() + "", "小处男");
newBean.save();

安卓轻量型数据库Litepal简单使用_第8张图片

三·删除数据

DataSupport.deleteAll(StudentBeanDB.class,"sName = ?","胖娃娃5");
安卓轻量型数据库Litepal简单使用_第9张图片

在这部操作的时候其实使出了一个错的,错误日志如下:

安卓轻量型数据库Litepal简单使用_第10张图片

为什么尼,我在查询某个固定的姓名时使用了“where sName = ? ",因为这个where出了错,这个是litepal提供的方便,但是太方便就会。。。

四·修改数据

ContentValues contentValues = new ContentValues();
contentValues.put("sName","小明要开车");
DataSupport.updateAll(StudentBeanDB.class,contentValues," sName = ?","胖娃娃11");
其中ContenValues只是系统提供的一个HashMap。

安卓轻量型数据库Litepal简单使用_第11张图片

以上便是litepal的简单使用,至于多表连接,多表查询,将在以后介绍。

奉上郭霖的相关讲解传送门litepal郭郭

      一家之言,有误望君扶正,多谢。

你可能感兴趣的:(切记且忌(安卓))