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

来源:互联网 发布:网络优化培训机构 编辑:程序博客网 时间:2024/05/12 01:17

      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'
      更加具体


       第二步:创建application继承LitePalApplication


   为什么要这么做尼,接下来请看,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


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

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

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

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

   创建asset文件夹的方法如下


  创建litepal.xml

<litepal>    <!--创建的数据库名称为demoTest-->    <dbname value = "demoTest"/>    <!--数据库版本号-->    <version value = "1"/>  <List>      <!--创建的于demoTest下的StudentBeanDB-->      <maping class = "com.example.march_day18_litepal_simple_use.StudentBeanDB"/>  </List></litepal>

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

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.xml文件的时候多打了一个字母,致使litepal不能映射出数据库

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

public void touch(View v){            List<StudentBeanDB> 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)


二·增添数据

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

三·删除数据

DataSupport.deleteAll(StudentBeanDB.class,"sName = ?","胖娃娃5");

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

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

四·修改数据

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


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

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

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

1 0