Android - 数据库操作之 litepal

作者: Allens_Jiang | 来源:发表于2018-01-03 18:16 被阅读520次
    老婆保佑,代码无BUG

    前言

    其实这个litepal,官网已经讲的很详细了,这里只是做个笔记,我感觉,醒目中,使用litepal,真的很方便,想想以前使用原生的写法,真是累啊


    目录

    • 如何使用
        1. 引入
      • 2.配置环境
        1. 开始使用
        • (1)创建表格
        • (2)升级表
        • (3) 数据操作

    官网

    LitePal

    如何使用

    1. 引入

      compile 'org.litepal.android:core:1.6.1'
    

    2.配置环境

    (1)在项目的assets文件夹中创建一个文件,并将其命名为litepal.xml。然后将以下代码复制到它

    屏幕快照 2018-01-03 下午5.17.03.png
    
    <?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <!-- 数据库名字 -->
        <dbname value="demo" />
    
        <!-- 数据库版本 -->
        <version value="1" />
    
    
        <!--  数据库对象  -->
        <list>
            <mapping class="com.allens.litepaldemo.User"></mapping>
        </list>
    
    </litepal>
    
    

    (2)配置LitePalApplication

    public class MyApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            LitePal.initialize(this);
        }
    }
    
    

    3. 开始使用

    (1)创建表格

    public class User extends DataSupport {
    
        private String name;
    
        private int age;
    
        //get set
    }
    
    

    补充说明: 使用注解对字段进行约束

    @Column(unique = true)              //是否唯一
    @Column(defaultValue = "default")   //指定字段默认值
    @Column(nullable = false)           //是否可以为空
    @Column(ignore = true)              //是否可以忽略
    

    然后将这些模型添加到litepal.xml中的映射列表中:

    <list>
            <mapping class="com.allens.litepaldemo.User"></mapping>
    </list>
    

    好!这些表格将在您下次操作数据库时生成。例如,使用以下代码获取SQLiteDatabase:

    SQLiteDatabase db =  LitePal 。getDatabase();
    

    (2)升级表

    在litepal.xml中增加版本号

    < version  value = “ 2 ” > </ version >
    

    (3) 数据操作

    package com.allens.litepaldemo;
    
    import android.content.ContentValues;
    import android.database.sqlite.SQLiteDatabase;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    
    import com.apkfuns.logutils.LogUtils;
    
    import org.litepal.crud.DataSupport;
    import org.litepal.crud.callback.FindMultiCallback;
    import org.litepal.tablemanager.Connector;
    import org.litepal.util.LogUtil;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            SQLiteDatabase db = Connector.getDatabase();
    
            findViewById(R.id.btn_insert).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //第一种  不推荐
    //                ContentValues cv = new ContentValues();
    //                cv.put("name", "江海洋");
    //                cv.put("age", 25);
    //                db.insert("User", null, cv);
    
    
                    //第二种 推荐
                    User user = new User();
                    user.setAge(19);
                    user.setName("Allens");
                    user.save();
    
                }
            });
    
            findViewById(R.id.btn_query).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    //                List<User> list = DataSupport.findAll(User.class);
    //                LogUtils.e(list);
    
        
                  //异步查询
                    DataSupport.findAllAsync(User.class).listen(new FindMultiCallback() {
                        @Override
                        public <T> void onFinish(List<T> t) {
                            List<User> allSongs = (List<User>) t;
                            LogUtils.e(allSongs);
                            LogUtils.e(allSongs.size());
                        }
                    });
                }
            });
    
            findViewById(R.id.btn_update).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    User user = DataSupport.find(User.class, 1);
                    user.setName("Allens");
                    user.setAge(18);
                    user.save();
                }
            });
    
            findViewById(R.id.btn_delete).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //删除某个数据
    //                int delete = DataSupport.delete(User.class, 1);
    //                LogUtils.e("delete--->" + delete);
    
    
                    //删除全部数据
                    int i = DataSupport.deleteAll(User.class);
                    LogUtils.e("delete--->" + i);
                }
            });
        }
    }
    
    

    更多用法,请看官方文档,使用还是比较简单的

    相关文章

      网友评论

        本文标题:Android - 数据库操作之 litepal

        本文链接:https://www.haomeiwen.com/subject/qktknxtx.html