Android————LitePal

LitePal

LitePal是一个Android强大的数据开源库,它使开发者使用SQLite数据库变得非常容易。 程序员可以不用写一句SQL语句就可以完成大部分数据库操作,而且LitePal不需要写SQL语句就可以实现数据库的增删查改功能。

LitePal的使用

一、LitePal用前准备

1.导入依赖库

想要使用LitePal就需要导入第三方插件,也就是依赖库,这样我们就不需要自己建立数据库,直接使用Android中自带的数据库,极大的减少了我们在建立数据库时所浪费的时间。

在build.gradle文件并添加下面的依赖关系:
dependencies {
    compile 'org.litepal.android:core:1.6.1'
}

2.配置litepal.xml

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

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    //定义应用程序的数据库名称
    <dbname value="demo" />
    //定义数据库的版本
    <version value="1" />
    //使用映射标签在列表中定义模型,LitePal将为每个映射类创建表格,存储配置数据库文件应存储的位置
    <list>
        <mapping class="com.lenovo.liu.litepol.entity.Album" />
        <mapping class="com.lenovo.liu.litepol.entity.Student" />
    </list>


</litepal>

3.配置LitePalApplication

我们需要在AndroidManifest中配置LitePalApplication,例如:

 <application
         //配置LitePalApplication
        android:name="org.litepal.LitePalApplication"

    </application>

二、使用LitePal

首先我们需要建两个类添加到litepal.xml中的映射列表中
Song类

public class Songextends DataSupport {
    @Column(nullable = false)
    private String name;
    private int duration;
    //忽略 不存储在数据库
    @Column(ignore = true)
    private String uselessField;
    private Album album;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

    public String getUselessField() {
        return uselessField;
    }

    public void setUselessField(String uselessField) {
        this.uselessField = uselessField;
    }

    public Album getAlbum() {
        return album;
    }

    public void setAlbum(Album album) {
        this.album = album;
    }
}

Album类

public class Album extends DataSupport {
    //unique = true,使表中数据唯一
    //唯一,可空,并且,默认值是unkonwn
    @Column(unique = true, defaultValue = "unknown")
    private String name;
    private float price;
    private byte[] cover;
    private List<Song> songs = new ArrayList<Song>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public byte[] getCover() {
        return cover;
    }

    public void setCover(byte[] cover) {
        this.cover = cover;
    }

    public List<Song> getSongs() {
        return songs;
    }

    public void setSongs(List<Song> songs) {
        this.songs = songs;
    }
}

Activity中xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.lenovo.liu.litepol.MainActivity">
    //定义一个输入框,和增删改查四个按钮控件
    <EditText
        android:id="@+id/main_edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/add_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="添加"/>
    <Button
        android:id="@+id/modify_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="修改"/>
    <Button
        android:id="@+id/delete_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="删除"/>
    <Button
        android:id="@+id/query_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="查询"/>
</LinearLayout>

Activity代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    //定义xml中的控件
    private EditText albumEdit;
    private Button addBtn;
    private Button modifyBtn;
    private Button deleteBtn;
    private Button queryBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //在开始启动时,要创建数据库,只需启动一次
//        SQLiteDatabase liteDatabase= LitePal.getDatabase();
        bindID();
    }
    //绑定id和监听事件
    private void bindID() {
        addBtn=findViewById(R.id.add_btn);
        modifyBtn=findViewById(R.id.modify_btn);
        deleteBtn=findViewById(R.id.delete_btn);
        queryBtn=findViewById(R.id.query_btn);
        albumEdit=findViewById(R.id.main_edit);
        albumEdit.setOnClickListener(this);
        addBtn.setOnClickListener(this);
        modifyBtn.setOnClickListener(this);
        deleteBtn.setOnClickListener(this);
        queryBtn.setOnClickListener(this);
    }
    //进行点击事件的判断
    @Override
    public void onClick(View view) {
        switch (view.getId()){
        //增加数据
            case R.id.add_btn:
                //获取输入框的内容
                String albumName=albumEdit.getText().toString();
                //运用float型
                float price=109.90f;
                //定义数据表
                Album album=new Album();
                album.setName(albumName);
                album.setPrice(price);
                //保存数据表
                album.save();
                break;
             //更改数据
            case R.id.modify_btn:
                //用DataSupport.find更改表中某一行数据,第一个参数是数据表,第二个参数是id
                Album album1 = DataSupport.find(Album.class, id);
                //更改price
                album1.setPrice(20.99f); 
                //更改名字
                album1.setName("xiao");
                //保存数据表
                album1.save();
                break;
            //删除数据
            case R.id.delete_btn:
                //删除某行数据
                int row=DataSupport.delete(Album.class, id);
                //删除所有数据,第三个参数是?的占位符
                //int row=DataSupport.deleteAll(Album.class, "id>?","3");
                break;
            //查询数据
            case R.id.query_btn:
                //更改某一行数据
                Album album2 = DataSupport.find(Album.class, id);
                //更改所有数据
                List<Album> allSongs = DataSupport.findAll(Album.class);
                //更改指定的数据
                List<Album> songs = DataSupport.where("id< ?", "4").find(Album.class);
                //运用for循环输出所有数据
                //  for (Album a:allSongs){
                //     Log.e( "onClick: ", a.getName()+"***********************");
                //  }
                //运用for循环输出指定的数据
                for (Album a:songs){
                    Log.e( "onClick: ", a.getName()+"***********************");
                }
                //打印某行数据
//                Log.e( "onClick: ", album2.getName()+"***********************");
                break;
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值