LitePal学习笔记

    xiaoxiao2021-03-25  83

    一、配置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

    转载请注明原文地址: https://ju.6miu.com/read-33859.html

    最新回复(0)