[Android新手学习笔记36]-Storage-LitePal

使用前需要在app/build.gradle文件中添加如下内容:

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

右键app/src/main新建assets目录,右键该目录,新建litepal.xml:

  
  
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <litepal>
  3.    <dbname value="BookStore"></dbname>
  4.    <version value="1"></version>
  5.    <list>
  6.        
  7.    </list>
  8. </litepal>
改变表时,将版本值加1即可。

在AndroidMainfest中的<application>标签添加下面属性:

android:name="org.litepal.LitePalApplication"

 
 
  1. <application
  2.    android:name="org.litepal.LitePalApplication"
  3.    android:allowBackup="true"
  4.    android:icon="@mipmap/ic_launcher"
  5.    android:label="@string/app_name"
  6.    android:supportsRtl="true"
  7.    android:theme="@style/AppTheme">
  8.    <activity android:name=".MainActivity">
  9.        <intent-filter>
  10.            <action android:name="android.intent.action.MAIN" />
  11.            <category android:name="android.intent.category.LAUNCHER" />
  12.        </intent-filter>
  13.    </activity>
  14. </application>


创建Book类:

  
  
  1. public class Book {
  2.    private int id;
  3.    private String author;
  4.    private double price;
  5.    private int pages;
  6.    private String name;
  7.    public String getAuthor() {
  8.        return author;
  9.    }
  10.    public int getId() {
  11.        return id;
  12.    }
  13.    public String getName() {
  14.        return name;
  15.    }
  16.    public int getPages() {
  17.        return pages;
  18.    }
  19.    public double getPrice() {
  20.        return price;
  21.    }
  22.    public void setAuthor(String author) {
  23.        this.author = author;
  24.    }
  25.    public void setId(int id) {
  26.        this.id = id;
  27.    }
  28.    public void setName(String name) {
  29.        this.name = name;
  30.    }
  31.    public void setPages(int pages) {
  32.        this.pages = pages;
  33.    }
  34.    public void setPrice(double price) {
  35.        this.price = price;
  36.    }
  37. }

然后在litepal.xml中增加一行代码,使其映射到Book类:

  
  
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <litepal>
  3.    <dbname value="BookStore"></dbname>
  4.    <version value="1"></version>
  5.    <list>
  6.        <mapping class="top.xiexiaodong.litepaldemo.Book"></mapping>
  7.    </list>
  8. </litepal>

之后在映射类,在<list>标签中继续加上就行。

  
  
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <litepal>
  3.    <dbname value="BookStore"></dbname>
  4.    <version value="1"></version>
  5.    <list>
  6.        <mapping class="top.xiexiaodong.litepaldemo.Book"></mapping>
  7.        <mapping class="top.xiexiaodong.litepaldemo.Category"></mapping>
  8.    </list>
  9. </litepal>

它不用先drop在创建,会保存之前的数据。

简单的增删改查:

  
  
  1. public class MainActivity extends AppCompatActivity {
  2.    @Override
  3.    protected void onCreate(Bundle savedInstanceState) {
  4.        super.onCreate(savedInstanceState);
  5.        setContentView(R.layout.activity_main);
  6.        Button createButton = (Button) findViewById(R.id.create_button);
  7.        createButton.setOnClickListener(new View.OnClickListener() {
  8.            @Override
  9.            public void onClick(View v) {
  10.                LitePal.getDatabase();
  11.            }
  12.        });
  13.        Button insertButton = (Button) findViewById(R.id.insert_button);
  14.        insertButton.setOnClickListener(new View.OnClickListener() {
  15.            @Override
  16.            public void onClick(View v) {
  17.                Book book = new Book();
  18.                book.setName("name 1");
  19.                book.setAuthor("zh2的");
  20.                book.setPages(133);
  21.                book.setPrice(123.3);
  22.                book.setPress("Unkonw");
  23.                book.save();
  24.            }
  25.        });
  26.        // 不能对已经存在的数据进行修改
  27.        Button updateButton = (Button) findViewById(R.id.update_button);
  28.        updateButton.setOnClickListener(new View.OnClickListener() {
  29.            @Override
  30.            public void onClick(View v) {
  31.                Book book = new Book();
  32.                book.setName("name 2");
  33.                book.setAuthor("zh3的");
  34.                book.setPages(143);
  35.                book.setPrice(143.3);
  36.                book.setPress("Unkonw 2");
  37.                book.save();
  38.                book.setPrice(11.11);
  39.                book.save();
  40.            }
  41.        });
  42.        // 不能设置字段的新值为默认值,int=0等,可以通过book.setToDefaut("pages");方法将pages字段设置成默认值
  43.        Button update2Button = (Button) findViewById(R.id.update2_button);
  44.        update2Button.setOnClickListener(new View.OnClickListener() {
  45.            @Override
  46.            public void onClick(View v) {
  47.                Book book = new Book();
  48.                book.setPrice(324.1);
  49.                book.setPress("Unkonw 3");
  50.                book.updateAll("name = ? and author = ?", "name 2", "zh3的");
  51.            }
  52.        });
  53.        Button deleteButton = (Button) findViewById(R.id.delete_button);
  54.        deleteButton.setOnClickListener(new View.OnClickListener() {
  55.            @Override
  56.            public void onClick(View v) {
  57.                DataSupport.deleteAll(Book.class, "price < ?", "15");
  58.            }
  59.        });
  60.        Button selectButton = (Button) findViewById(R.id.select_button);
  61.        selectButton.setOnClickListener(new View.OnClickListener() {
  62.            @Override
  63.            public void onClick(View v) {
  64.                List<Book> books = DataSupport.findAll(Book.class);
  65.                for (Book book : books) {
  66.                    Log.d("xxd", book.getName() + book.getAuthor() + book.getPages() + book.getPrice() + book.getPress());
  67.                }
  68.            }
  69.        });
  70.    }
  71. }

查询第一条数据:

Book firstBook = DataSupport.findFirst(Book.class);

查询最后一条语句:

Book lastBook = DataSupport.findLast(Book.class);

  • select()方法用于指定查询那几列数据。

    List<Book> books = DataSupport.select("name", "author").find(Book.class);

  • where()方法用于指定查询的约束条件。

    List<Book> books = DataSupport.where("pages > ?", "300").find(Book.class);

  • order()方法用于指定结果的排列方式。

    List<Book> books = DataSupport.order("price desc").find(Book.class);

  • limit()方法用于指定查询结果的数量。

    List<Book> books = DataSupport.limit(3).find(Book.class);

  • offset()方法用于指定查询结果的偏移量。

    List<Book> books = DataSupport.limit(3).offset(1).find(Book.class);

  • limit(3)表示前3个数据,offset(1)偏移1后结果变成第2,3,4个数据了。

以上方法任意组合。如果特殊需求,可用原生SQL:

Cursor c = DataSupport.findBySQL("select * from Book where pages > ? and price < ?", "300", "20");

findBySQL()原生查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值