LitePal学习笔记

来源:互联网 发布:淘宝cvr 编辑:程序博客网 时间:2024/05/02 06:44

一、配置LitePal

1.引入dependencies闭包

编辑app/build.gradle文件,在dependencies闭包中添加
dependencies {    compile 'org.litepal.android:core:1.3.0'}

2.配置litepal.xml文件

在app/src/main目录新建assets目录,然后新建litepal.xml,编辑内容
<?xml version="1.0" encoding="utf-8"?><litepal>    <dbname value="BookStore"></dbname>    <version value="1"></version>    <list>         </list></litepal>
<dbname>标签为数据库名,<version>标签为版本号,<list>标签用于数据库表。

3.配置AndroidManifest.xml

添加 android:name="org.litepal.LitePalApplication"

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.luckychuan.litepaldemo">    <application        android:name="org.litepal.LitePalApplication"       android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">    </application></manifest>

二、创建和升级数据库

1.创建模型类Book类

public class Book extends DataSupport {    private int id;    private String author;    private double price;    private int pages;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public int getPages() {        return pages;    }    public void setPages(int pages) {        this.pages = pages;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

必须继承DataSupport类才能进行CRUD操作。Book类就会对应数据库中的Book表,在Book类中定义的id,author,price,pages,name即为表中的每一列。


2.修改litepal.xml代码

 <list>        <mapping class="com.example.luckychuan.litepaldemo.Book"></mapping> </list>

使用<mapping>标签配置数据库表(使用完整的类名)。


3.在java代码中创建数据库

在MainActivity代码中调用Connector.getDatabase()方法完成数据库的创建。

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //创建数据库的按钮        ((Button)findViewById(R.id.create_db_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Connector.getDatabase();            }        });    }

三、添加数据

     ((Button) findViewById(R.id.insert_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Book book = new Book();                book.setName("The Da Vinci Code");                book.setAuthor("Dan Brown");                book.setPages(123);                book.setPrice(10.00);                book.save();            }        });

四、更新数据

        ((Button) findViewById(R.id.update_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Book book = new Book();                book.setPages(233);                book.updateAll("name = ? and author = ?", "The Da Vinci Code", "Dan Brown");            }        });

五、删除数据

        ((Button) findViewById(R.id.delete_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //删除所有数据                DataSupport.deleteAll(Book.class);                //满足条件的删除                DataSupport.deleteAll(Book.class, "price < ?", "100");            }        });

六、查询数据

1.查询所有数据

((Button) findViewById(R.id.query_all_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                List<Book> books = DataSupport.findAll(Book.class);                for (Book book : books) {                    Log.d(TAG, "onClick: " + book.getId());                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                    Log.d(TAG, "onClick: " + book.getPages());                    Log.d(TAG, "onClick: " + book.getPrice());                }            }        });


2.带条件的查询

((Button) findViewById(R.id.query_btn)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //查询第一条数据                Book firstBook = DataSupport.findFirst(Book.class);                Log.d(TAG, "onClick: " + firstBook.getId());                Log.d(TAG, "onClick: " + firstBook.getName());                Log.d(TAG, "onClick: " + firstBook.getAuthor());                Log.d(TAG, "onClick: " + firstBook.getPages());                Log.d(TAG, "onClick: " + firstBook.getPrice());                //查询最后一条数据                Book lastBook = DataSupport.findLast(Book.class);                Log.d(TAG, "onClick: " + lastBook.getId());                Log.d(TAG, "onClick: " + lastBook.getName());                Log.d(TAG, "onClick: " + lastBook.getAuthor());                Log.d(TAG, "onClick: " + lastBook.getPages());                Log.d(TAG, "onClick: " + lastBook.getPrice());                //select()方法用于查询哪几列                List<Book> selectBooks = DataSupport.select("name","author").find(Book.class);                for (Book book : selectBooks) {                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                }                List<Book> whereBooks = DataSupport.where("name = ?","The Da Vinci Code").find(Book.class);                for (Book book : whereBooks) {                    Log.d(TAG, "onClick: " + book.getId());                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                    Log.d(TAG, "onClick: " + book.getPages());                    Log.d(TAG, "onClick: " + book.getPrice());                }                //order()方法用于对查询结果的排列方式                List<Book> orderBooks = DataSupport.order("price desc").find(Book.class);                for (Book book : orderBooks) {                    Log.d(TAG, "onClick: " + book.getId());                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                    Log.d(TAG, "onClick: " + book.getPages());                    Log.d(TAG, "onClick: " + book.getPrice());                }                //limit()方法用于对查询结果的限制,如limit(3)表示只查询前三条数据                List<Book> limitBooks = DataSupport.limit(2).find(Book.class);                for (Book book : limitBooks) {                    Log.d(TAG, "onClick: " + book.getId());                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                    Log.d(TAG, "onClick: " + book.getPages());                    Log.d(TAG, "onClick: " + book.getPrice());                }                //offset()方法用于查询结果的偏移量,如offset(1)表示偏移1条数据,从第2条数据开始查询                //offset()方法和limit()方法连用,共同组成了SQL当中的limit关键字                List<Book> offsetBooks = DataSupport.limit(2).offset(1).find(Book.class);                for (Book book : offsetBooks) {                    Log.d(TAG, "onClick: " + book.getId());                    Log.d(TAG, "onClick: " + book.getName());                    Log.d(TAG, "onClick: " + book.getAuthor());                    Log.d(TAG, "onClick: " + book.getPages());                    Log.d(TAG, "onClick: " + book.getPrice());                }            }        });


源代码:https://github.com/Luckychuan/LitePalDemo.git







1 0